AM2: Protected-Mode Programming

Size: px
Start display at page:

Download "AM2: Protected-Mode Programming"

Transcription

1 : Protected-Mode Programming Duration: 3 hours Components: Lab exercises and report. Objectives: (a) To examine how protected-mode programming is done on x86 based computer. (b) To evaluate the advantages of protected-mode programming compared to real-mode programming in x86 microprocessor. (c) To develop protected-mode assembly language programs which utilize the floatingpoint unit (FPU) on x86 based computer. (d) To develop Win32 Console programs based on x86 assembly language. 1. Floating-Point Unit The Intel 8086 processor was designed to handle only integer arithmetic. This turned out to be a problem for graphics and calculation-intensive software using floating-point calculations. It was possible to emulate floating-point arithmetic purely through software, but the performance penalty was severe. Programs such as AutoCad (by Autodesk) demanded a more powerful way to perform floating-point math. Intel sold a separate floating-point coprocessor chip named the 8087, and upgraded it along with each processor generation. Beginning from Intel 80486, the floating-point hardware was integrated into the processor and known as the floating-point unit (FPU). 1.1 FPU Register Stack The FPU does not use the general-purpose registers (EAX, EBX, etc.). Instead, it has its own set of registers called a register stack. It loads values from memory into the register stack, performs calculations, and stores stack values into memory. FPU instructions evaluate mathematical expressions in postfix format. The following, for example, is called an infix expression: (5 * 6) + 4. The postfix equivalent is 5 6 * 4 + The infix expression (A + B) * C requires parenthesis to override the default precedence rules (multiplication before addition). The parenthesis is not required in the equivalent postfix expression: A B + C * Expression Stack A stack holds intermediate values during the evaluation of postfix expressions. Figure 1.1 shows the steps required to evaluate the postfix expression 5 6 * 4. The stack entries are labelled ST(0) and ST(1), with ST(0) indicating where the stack pointer would normally be pointing. Page 1 of 14

2 Figure 1.1: Evaluating the Postfix Expression 5 6 * 4. Table 1.1 contains some examples of translating infix to equivalent postfix expressions. Table 1.1 Infix to Postfix Examples Infix Postfix A + B A B + (A - B) / D A B - D / (A + B) * (C + D) A B + C D + * ((A + B) / C) * (E - F) AB + C / EF - * 1.2 FPU Data Registers The FPU has eight individually addressable 80-bit data registers named R0 through R7 (see Figure 2). Together, they are called a register stack. A three-bit field named TOP in the FPU status word identifies the register number that is currently the top of the stack. In Figure 1.2, for example, TOP equals binary 011, identifying R3 as the top of the stack. This stack location is also known as ST(0) (or simply ST) when writing floating-point instructions. The last register is ST(7). Figure 1.2: Floating-Point Data Register Stack. As we might expect, a push operation (also called load) decrements TOP by 1 and copies an operand into the register identified as ST(0). If TOP equals 0 before a push, TOP wraps around to register R7. A pop operation (also called store) copies the data at ST(0) into an operand, then adds 1 to TOP. If TOP equals 7 before the pop, it wraps around to register R0. Page 2 of 14

3 If loading a value into the stack would result in overwriting existing data in the register stack, a floating-point exception is generated. Figure 1.3 shows the same stack after 1.0 and 2.0 have been pushed (loaded) on the stack. Figure 1.3: FPU Stack after Pushing 1.0 and 2.0. Although it is interesting to understand how the FPU implements the stack using a limited set of registers, we need only focus on the ST(n) notation, where ST(0) is always the top of stack. From this point forward, we refer to stack registers as ST(0), ST(1), and so on. Instruction operands cannot refer directly to register numbers. Floating-point values in registers use the IEEE 10-byte extended real format (also known as temporary real). When the FPU stores the result of an arithmetic operation in memory, it translates the result into one of the following formats: integer, long integer, single precision (short real), double precision (long real), or packed binary-coded decimal (BCD). 1.3 Floating-Point Instruction Set The FPU instruction set is somewhat complex, so we will attempt here to give you an overview of its capabilities, along with specific examples that demonstrate code typically generated by compilers. In addition, we will see how you can exercise control over the FPU by changing its rounding mode. The instruction set contains the following basic categories of instructions: Data transfer Basic arithmetic Comparison Transcendental Load constants (specialized predefined constants only) x87 FPU control x87 FPU and SIMD state management Floating-point instruction names begin with the letter F to distinguish them from CPU instructions. The second letter of the instruction mnemonic (often B or I) indicates how a memory operand is to be interpreted: B indicates a BCD operand, and I indicates a binary integer operand. If neither is specified, the memory operand is assumed to be in real-number format. For example, FBLD operates on BCD numbers, FILD operates on integers, and FLD operates on real numbers. Page 3 of 14

4 1.3.1 Operands A floating-point instruction can have zero operands, one operand, or two operands. If there are two operands, one must be a floating-point register. There are no immediate operands, but certain predefined constants (such as 0.0, _ and log2 10) can be loaded into the stack. General-purpose registers such as EAX, EBX, ECX, and EDX cannot be operands. (The only exception is FSTSW, which stores the FPU status word in AX.) Memory-to-memory operations are not permitted. Integer operands must be loaded into the FPU from memory (never from CPU registers); they are automatically converted to floating-point format. Similarly, when storing floating-point values into integer memory operands, the values are automatically truncated or rounded into integers Initialization (FINIT) The FINIT instruction initializes the FPU. It sets the FPU control word to 037Fh, which masks (hides) all floating-point exceptions, sets rounding to nearest even, and sets the calculation precision to 64 bits. We recommend calling FINIT at the beginning of your programs, so you know the starting state of the processor Floating-Point Data Types Let s quickly review the floating-point data types supported by MASM (QWORD, TBYTE, REAL4, REAL8, and REAL10), listed in Table 1.2. You will need to use these types when defining memory operands for FPU instructions. For example, when loading a floating-point variable into the FPU stack, the variable is defined as REAL4, REAL8, or REAL10: bigval REAL E+864 fld bigval ; load variable into stack Table 1.2: Intrinsic Data Types. Type Usage QWORD 64-bit integer TBYTE 80-bit (10-byte) integer REAL4 32-bit (4-byte) IEEE short real REAL8 64-bit (8-byte) IEEE long real REAL10 80-bit (10-byte) IEEE extended real Reading and Writing Floating-Point Values In this experiment, the following two procedures for floating-point input-output (created by William Barrett of San Jose State University) are used: ReadFloat: Reads a floating-point value from the keyboard and pushes it on the floatingpoint stack. It accepts a wide variety of floating-point formats. Some examples are shown below: E E E E-4 3.5E5 WriteFloat: Writes the floating-point value at ST(0) to the console window in exponential format. ShowFPUStack: Another useful procedure, written by James Brink of Pacific Lutheran University, displays the FPU stack. It is called with no parameters: call ShowFPUStack Page 4 of 14

5 Example 1.1 The following example program pushes two floating-point values on the FPU stack, displays it, inputs two values from the user, multiplies them, and displays their product: TITLE Example 1.1 (ex11.asm) INCLUDE Irvine32.inc INCLUDE macros.inc first REAL second REAL third REAL8? main PROC finit ; initialize FPU ; Push two floats and display the FPU stack. fld first fld second call ShowFPUStack ; Input two floats and display their product. mwrite "Please enter a real number: " call ReadFloat mwrite "Please enter a real number: " call ReadFloat fmul ST(0),ST(1) ; multiply mwrite "Their product is: " call WriteFloat call Crlf exit main ENDP END main Note: Please refer to Appendix A on how to build and run this program. Sample input/output (user input shown in bold type): FPU Stack ST(0): E+001 ST(1): E+002 Please enter a real number: 3.5 Please enter a real number: 4.2 Their product is: E+001 Example 1.2 Let s code the expression vald = -vala + (valb * valc). A possible step-by-step solution is: Load vala on the stack and negate it. Load valb into ST(0), moving vala down to ST(1). Multiply ST(0) by valc, leaving the product in ST(0). Add ST(1) and ST(0) and store the sum in vald: TITLE Example 1.2 (ex12.asm) INCLUDE Irvine32.inc INCLUDE macros.inc vala REAL8 1.5 valb REAL8 2.5 valc REAL8 3.0 vald REAL8? ; +6.0 Page 5 of 14

6 main PROC finit fld vala ; ST(0) = vala fchs ; change sign of ST(0) fld valb ; load valb into ST(0) fmul valc ; ST(0) *= valc fadd ; ST(0) += ST(1) fstp vald ; store ST(0) to vald exit main ENDP END main Please refer to Appendix B on how to debug this program. Exercise 1.1 Write a program that prompts the user for the radius of a circle. Calculate and display the circle s circumference and area. Use the ReadFloat and WriteFloat procedures. Use the FLDPI instruction to load onto the register stack. Please refer to Appendix A on how to create, build and run your program. Exercise 1.2 Write a program that asks the user to enter the X and Y coordinates of two points on a straight line. Calculate and display the gradient of the straight line. Use the ReadFloat and WriteFloat procedures in your program. 2. Win32 Console Programming On the surface, 32-bit console mode programs look and behave like 16-bit MS-DOS programs running in text mode. There are differences, however: The former runs in 32-bit protected mode, whereas MS-DOS programs run in real-address mode. They use different function libraries. Win32 programs call functions from the same library used by graphical Windows applications. MS-DOS programs use BIOS and MS-DOS interrupts that have existed since the introduction of the IBM-PC. 2.1 Application Programming Interface An Application Programming Interface (API) is a collection of types, constants, and functions that provide a way to directly manipulate objects through programming. Therefore, the Win32 API lets you tap into the functions in the 32-bit version of MS-Windows. The Irvine32 link library used in this experiment is completely built on Win32 console functions. It is compatible with Win32 API functions and can be used for basic input output, simulations, timing, and other useful operations. Table 2.1 gives a complete list of procedures in the Irvine32 link library. Table 2.1: Procedures in the Irvine32 link library Procedure Description CloseFile Closes a disk file that was previously opened. Clrscr Clears the console window and locates the cursor at the upper left corner. CreateOutputFile Creates a new disk file for writing in output mode. Crlf Writes an end-of-line sequence to the console window. Delay Pauses the program execution for a specified n -millisecond interval. DumpMem Writes a block of memory to the console window in hexadecimal. DumpRegs Displays the EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EFLAGS, and EIP registers in hexadecimal. Also displays the most common CPU status flags. GetCommandTail Copies the program s command-line arguments (called the command tail) Page 6 of 14

7 GetDateTime GetMaxXY GetMseconds GetTextColor Gotoxy IsDigit MsgBox MsgBoxAsk OpenInputFile ParseDecimal32 ParseInteger32 Random32 Randomize RandomRange ReadChar ReadDec ReadFromFile ReadHex ReadInt ReadKey ReadString SetTextColor Str_compare Str_copy Str_length Str_trim Str_ucase WaitMsg WriteBin WriteBinB WriteChar WriteDec WriteHex WriteHexB WriteInt WriteStackFrame WriteStackFrameName WriteString WriteToFile WriteWindowsMsg into an array of bytes. Gets the current date and time from the system. Gets the number of columns and rows in the console window s buffer. Returns the number of milliseconds elapsed since midnight. Returns the active foreground and background text colors in the console window. Locates the cursor at a specific row and column in the console window. Sets the Zero flag if the AL register contains the ASCII code for a decimal digit (0 9). Displays a popup message box. Display a yes/no question in a popup message box. Opens an existing disk file for input. Converts an unsigned decimal integer string to 32-bit binary. Converts a signed decimal integer string to 32-bit binary. Generates a 32-bit pseudorandom integer in the range 0 to FFFFFFFFh. Seeds the random number generator with a unique value. Generates a pseudorandom integer within a specified range. Waits for a single character to be typed at the keyboard and returns the character. Reads an unsigned 32-bit decimal integer from the keyboard, terminated by the Enter key. Reads an input disk file into a buffer. Reads a 32-bit hexadecimal integer from the keyboard, terminated by the Enter key. Reads a 32-bit signed decimal integer from the keyboard, terminated by the Enter key. Reads a character from the keyboard s input buffer without waiting for input. Reads a string from the keyboard, terminated by the Enter key. Sets the foreground and background colors of all subsequent text output to the console. Compares two strings. Copies a source string to a destination string. Returns the length of a string in EAX. Removes unwanted characters from a string. Converts a string to uppercase letters. Displays a message and waits for a key to be pressed. Writes an unsigned 32-bit integer to the console window in ASCII binary format. Writes a binary integer to the console window in byte, word, or doubleword format. Writes a single character to the console window. Writes an unsigned 32-bit integer to the console window in decimal format. Writes a 32-bit integer to the console window in hexadecimal format. Writes a byte, word, or doubleword integer to the console window in hexadecimal format Writes a signed 32-bit integer to the console window in decimal format. Writes the current procedure s stack frame to the console. Writes the current procedure s name and stack frame to the console. Writes a null-terminated string to the console window. Writes a buffer to an output file. Displays a string containing the most recent error generated by MS- Windows. Page 7 of 14

8 Some of the procedures that are used in this experiment are described in the following sections MsgBox The MsgBox procedure displays a graphical popup message box with an optional caption. (This works when the program is running in a console window.) Pass it the offset of a string in EDX, which will appear in the inside the box. Optionally, pass the offset of a string for the box s title in EBX. To leave the title blank, set EBX to zero. Sample call: caption db "Dialog Title", 0 HelloMsg mov ebx,offset caption mov edx,offset HelloMsg call MsgBox Sample output: BYTE "This is a pop-up message box.", 0dh,0ah BYTE "Click OK to continue...", MsgBoxAsk The MsgBoxAsk procedure displays a graphical popup message box with Yes and No buttons. (This works when the program is running in a console window.) Pass it the offset of a question string in EDX, which will appear in the inside the box. Optionally, pass the offset of a string for the box s title in EBX. To leave the title blank, set EBX to zero. MsgBoxAsk returns an integer in EAX that tells you which button was selected by the user. The value will be one of two predefined Windows constants: IDYES (equal to 6) or IDNO (equal to 7). Sample call: caption BYTE "Survey Completed",0 question BYTE "Thank you for completing the survey." BYTE 0dh,0ah BYTE "Would you like to receive the results?",0 mov ebx,offset caption mov edx,offset question call MsgBoxAsk ;(check return value in EAX) Page 8 of 14

9 Sample output: ReadString The ReadString procedure reads a string from the keyboard, stopping when the user presses the Enter key. Pass the offset of a buffer in EDX and set ECX to the maximum number of characters the user can enter, plus 1 (to save space for the terminating null byte). The procedure returns the count of the number of characters typed by the user in EAX. Sample call: buffer BYTE 21 DUP(0) ; input buffer bytecount DWORD? ; holds counter mov edx,offset buffer ; point to the buffer mov ecx,sizeof buffer ; specify max characters call ReadString ; input the string mov bytecount,eax ; number of characters ReadString automatically inserts a null terminator in memory at the end of the string. The following is a hexadecimal and ASCII dump of the first 8 bytes of buffer after the user has entered the string ABCDEFG : ABCDEFG The variable bytecount equals WriteString The WriteString procedure writes a null-terminated string to the console window. Pass the string s offset in EDX. Sample call: prompt BYTE "Enter your name: ",0 mov edx,offset prompt call WriteString WriteDec The WriteDec procedure writes a 32-bit unsigned integer to the console window in decimal format with no leading zeros. Pass the integer in EAX. Sample call: mov eax,295 call WriteDec ; displays: "295" WriteToFile The WriteToFile procedure writes the contents of a buffer to an output file. Pass it a valid file handle in EAX, the offset of the buffer in EDX, and the number of bytes to write in ECX. When the procedure returns, if EAX is greater than zero, it contains a count of the number of bytes written; otherwise, an error occurred. The following code calls WriteToFile: Page 9 of 14

10 BUFFER_SIZE = 5000 filehandle DWORD? buffer BYTE BUFFER_SIZE DUP(?) mov eax,filehandle mov edx,offset buffer mov ecx,buffer_size call WriteToFile The following pseudocode describes how to handle the value returned in EAX after calling WriteToFile: if EAX = 0 then error occurred when writing to file call WriteWindowsMessage to see the error else EAX = number of bytes written to the file endif Example 2 The following program creates a file in output mode, asks the user to enter some text, writes the text to the output file, reports the number of bytes written, and closes the file. It checks for errors after attempting to create the file: TITLE Creating a File (CreateFile.asm) INCLUDE Irvine32.inc BUFFER_SIZE = 501 buffer BYTE BUFFER_SIZE DUP(?) filename BYTE "output.txt",0 filehandle HANDLE? stringlength DWORD? byteswritten DWORD? str1 BYTE "Cannot create file",0dh,0ah,0 str2 BYTE "Bytes written to file [output.txt]:",0 str3 BYTE "Enter up to 500 characters and press" BYTE "[Enter]: ",0dh,0ah,0 main PROC ; Create a new text file. mov edx,offset filename call CreateOutputFile mov filehandle,eax ; Check for errors. cmp eax, INVALID_HANDLE_VALUE ; error found? jne file_ok ; no: skip mov edx,offset str1 ; display error call WriteString jmp quit ; Ask the user to input a string. file_ok: Page 10 of 14

11 mov edx,offset str3 ; "Enter up to..." call WriteString mov ecx,buffer_size ; Input a string mov edx,offset buffer call ReadString mov stringlength,eax ; counts chars entered ; Write the buffer to the output file. mov eax,filehandle mov edx,offset buffer mov ecx,stringlength call WriteToFile mov byteswritten,eax ; save return value call CloseFile ; Display the return value. mov edx,offset str2 ; "Bytes written" call WriteString mov eax,byteswritten call WriteDec call Crlf quit: exit main ENDP END main Note: Please refer to Appendix A on how to create, build and run this program Exercise 2.1 Modify the program in Example 2 so that it will display a graphical popup message box to ask the user whether the text file should be created. If the user selects Yes, the text file is created and the program terminates. Otherwise, the program will terminate directly. Exercise 2.2 Write a program that performs the following operations: i. Create a new text file. ii. Prompt the user for a student identification number, name, and date of birth. iii. Display a graphical popup message box to ask the user if there are more data. iv. If there are, allow the user to enter the new data and go back to step (iii). v. Otherwise, write all data to the text file and exit the program. References 1. Kip R. Irvine, Assembly Language for x86 Processors, 6 th Edition, Prentice-Hall Inc., U.S.A., Kip R. Irvine, Assembly Language for x86 Processors, 6 th Edition [Online]. Available: Important Note: Lab assessment will be carried out during the lab session. It is the student's responsibility to complete the given tasks and report to the lab instructors for assessment. (END) Page 11 of 14

12 Appendix A Opening a project Visual Studio and Visual C++ Express require assembly language source files to belong to a project, which is a kind of container. A project holds configuration information such as the locations of the assembler, linker, and required libraries. A project has its own folder, and it holds the names and locations of all files belonging to it. We have created a sample project folder in the c:\ecp4166\\example\project_sample directory, and its name is Project. Do the following steps, in order: i. Start Visual Studio or Visual C++ Express. ii. First you will open an existing Visual Studio project file. If you're using Visual Studio, select Open Project from the File menu. Or, if you're using Visual C++ Express, select Open, and select Project/Solution. iii. Navigate to the c:\ecp4166\\example\project_sample folder and open the file named Project.sln. iv. In the Solution Explorer window, you will see the word Project. This is the name of a Visual Studio project. v. Next, you need to add the source code file (.asm) to the project. To do that, right-click on Project, select Add, select Existing Item, select the main.asm file, and click the Add button to close the dialog window. (You can use this sequence of commands in the future to add any asm file into a project.) vi. Next, you will open the main.asm file for editing. Double-click the main.asm file to open it in the editing window. (Visual Studio users may see a popup dialog asking for the encoding method used in the asm file. just click the OK button to continue.) Build the Program Next, you will build (assemble and link) the sample program. Select Build Project from the Build menu. You should see messages indicating the build progress in the Output window for Visual Studio at the bottom of the screen. If you do not see these messages, the project has probably not been modified since it was last built. No problem--just select Rebuild Project from the Build menu. Run the Program Select Start without Debugging from the Debug menu. The following console window should appear, although your window will be larger than the one shown here: Creating New Projects of Your Own Before long, you will want to create your own projects. The easiest way to do this is to copy the entire c:\ecp4166\\examples\project_sample folder to a new location. Copy it to a folder in which you have read/write permissions. Page 12 of 14

13 Appendix B Microsoft Visual Studio 2008 Debugger This debugger lets you do the following: Step through your program, viewing the source code Set breakpoints in your code View CPU registers and flags View a disassembly of your program Watch the values of program variables View the runtime stack Display blocks of memory Perform remote debugging across a network Open the Visual Studio Project file 1. Go to the the folder in your computer that contains the project. You may use the sample project located at c:\ecp4166\\example\project_sample. 2. Double-click the file named Project.sln. 3. If there is already an asm file in the project, right-click on the asm file and select Remove in the Solution Explorer window. When prompted by a dialog window, click the Remove button. 4. Right-click Project in the same window, select Add, and select Existing Item. 5. Select your asm file. It will be added to your project. 6. Select Save All from the File menu to save your project settings. 7. Double-click your asm file in Solution Explorer to open it in the editor. Debugger Windows The debugging information is shown in the following windows after the debugger is invokved (press the F10 key). You can remove any debugger window by right-clicking on its Tab and selecting Hide. You can open any debugger window by selecting Windows from the Debug menu. Source Window The Source window displays the program's source file. Note that the first instruction has a yellow arrow next to it. The arrow always indicates the next instruction that is about to execute. Watch Window Select Windows from the Debug menu, and select Watch 1. A Watch window is like an electronic spreadsheet that displays the names and values of selected variables. As you step through a program, you can see variables in this window change value. Currently the window is empty, but you can drag any program variable into the window with your mouse. Click on the tab at the bottom of the screen labeled Watch 1 to bring it to the front. Drag the variables into the Watch window and note their current values. The values are currently displayed in decimal. You may select other format by right-clicking on the watch window and selecting the desired format from the popup menu. Page 13 of 14

14 Memory Window Select Windows from the Debug menu, and select Memory. The Memory window displays a raw dump of memory in either hexadecimal or decimal. It is particularly useful when working with array variables. For e.g., it can display the value of vald by typing &vald next to the Address label. The & before the variable name means to interpret the variable name as an address. In assembly language, all labels are implied addresses. Variable names are case-sensitive in the debugger. The Memory window displays a series of individual memory bytes, beginning at the address of vald. Right-click on the window, and select 64-bit Floating Point. Along the left side of the window is shown the address of the first value in each line. Register Window Select Windows from the Debug menu, and select Register. The Register window displays the contents of the CPU registers. The floating-point register stack and flag values are not shown by default, but you can add them by right-click in the Register window and select Floating Point and Flags, respectively. Debugging Program Step Over (F10) Pressing the F10 function key will single-step through the program. As you press F10, watch the yellow arrow in the Source window move from statement to statement. Notice the following as you step through the program: Individual register names (in the Register window) turn red, indicating that they have been modified. Variables in the Watch window turn red when they are modified. Memory locations in the Memory window turn red when they are modified. As soon as you reach the exit statement and press F10, the debugger halts. Step Into (F11) Another way to step through a program is to use the Trace (F11) command. It steps down into procedure calls. In contrast, the F10 key just executes procedure calls without tracing into the procedure code. Stopping and Restarting It's easy to either stop or restart your program inside the debugger while you're in the process of stepping through a program: To restart the program, select Restart from the Debug menu. The program is reloaded into memory, so any changes previously made to variables in the Watch window are undone. Also, you have to retype the name of your variable in the Memory window, because it resets itself to a default address. To stop debugging in the middle of a program, select Stop Debugging from the Debug menu. Note: Be sure to stop the debugger before trying to modify and re-assemble your program's source code. Otherwise, the linker will refuse to assemble your EXE file, indicating that it's currently in use. Page 14 of 14

AM2: Programming with Contemporary Instruction Set

AM2: Programming with Contemporary Instruction Set : Programming with Contemporary Instruction Set Duration: 3 hours Components: Lab exercises and report. Objectives: (a) To examine how protected-mode programming is done on x86 based computer. (b) To evaluate

More information

Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 5: Procedures. Chapter Overview. The Book's Link Library

Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 5: Procedures. Chapter Overview. The Book's Link Library Assembly Language for Intel-Based Computers, 4 th Edition Kip R Irvine Chapter 5: Procedures Slides prepared by Kip R Irvine Revision date: 10/3/2003 Chapter corrections (Web) Assembly language sources

More information

Lab 5: Input/Output using a Library of Procedures

Lab 5: Input/Output using a Library of Procedures COE 205 Lab Manual Lab 5: Input/Output using a Library of Procedures - Page 46 Lab 5: Input/Output using a Library of Procedures Contents 5.1. Using an External Library of Procedures for Input and Output

More information

Assembly Language for Intel-Based Computers, 4 th Edition

Assembly Language for Intel-Based Computers, 4 th Edition Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine Chapter 5: Procedures Lecture 18 Linking to External Library The Book s Link Library Stack Operations Slides prepared by Kip R. Irvine

More information

Assembly Language. Lecture 5 Procedures

Assembly Language. Lecture 5 Procedures Assembly Language Lecture 5 Procedures Ahmed Sallam Slides based on original lecture slides by Dr. Mahmoud Elgayyar Linking to External Library The Irvine library Stack Operations Runtime Stack PUSH, POP

More information

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 6 Input/output using a Library of Procedures April, 2014 1 Assembly Language LAB Using

More information

Assembly Language. Lecture 5 Procedures

Assembly Language. Lecture 5 Procedures Assembly Language Lecture 5 Procedures Ahmed Sallam Slides based on original lecture slides by Dr. Mahmoud Elgayyar Data Transfer Instructions Operand types MOV, MOVZX, MOVSX instructions LAHF, SAHF instructions

More information

Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 5: Procedures

Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 5: Procedures Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine Chapter 5: Procedures Slides prepared by the author Revision date: June 4, 2006 (c) Pearson Education, 2002. All rights reserved.

More information

Libraries and Procedures

Libraries and Procedures Computer Organization and Assembly Language Computer Engineering Department Chapter 5 Libraries and Procedures Presentation Outline Link Library Overview The Book's Link Library Runtime Stack and Stack

More information

Marking Scheme. Examination Paper Department of CE. Module: Microprocessors (630313)

Marking Scheme. Examination Paper Department of CE. Module: Microprocessors (630313) Philadelphia University Faculty of Engineering Marking Scheme Examination Paper Department of CE Module: Microprocessors (630313) Final Exam Second Semester Date: 02/06/2018 Section 1 Weighting 40% of

More information

Libraries and Procedures

Libraries and Procedures Libraries and Procedures COE 205 Computer Organization and Assembly Language Computer Engineering Department King Fahd University of Petroleum and Minerals Presentation Outline Link Library Overview The

More information

COE 205. Computer Organization and Assembly Language Dr. Aiman El-Maleh

COE 205. Computer Organization and Assembly Language Dr. Aiman El-Maleh Libraries i and Procedures COE 205 Computer Organization and Assembly Language Dr. Aiman El-Maleh College of Computer Sciences and Engineering King Fahd University of Petroleum and Minerals [Adapted from

More information

Real Arithmetic. Fractional binary numbers. Fractional binary numbers examples. Binary real numbers

Real Arithmetic. Fractional binary numbers. Fractional binary numbers examples. Binary real numbers Fractional binary numbers 2 i 2 i 1 Real Arithmetic Computer Organization and Assembly Languages g Yung-Yu Chuang 4 2 1 b i b i 1 b 2 b 1 b 0. b 1 b 2 b 3 b j Representation 1/2 1/4 1/8 2 j Bits to right

More information

Required Setup for 32-bit Applications

Required Setup for 32-bit Applications 1 of 23 8/25/2015 09:30 Getting Started with MASM and Visual Studio 2012 Updated 4/6/2015. This tutorial shows you how to set up Visual Studio 2012 (including Visual Studio 2012 Express for Windows Desktop)

More information

In order to run the program, go to the folder Release and run project.exe.

In order to run the program, go to the folder Release and run project.exe. Assembly Language and System Software Lab exercise You need to implement seven programs. In this lab exercise, you are going to get familiar with assembly programming. You should follow the guideline to

More information

Lab 2: Introduction to Assembly Language Programming

Lab 2: Introduction to Assembly Language Programming COE 205 Lab Manual Lab 2: Introduction to Assembly Language Programming - page 16 Lab 2: Introduction to Assembly Language Programming Contents 2.1. Intel IA-32 Processor Architecture 2.2. Basic Program

More information

Lab 6: Conditional Processing

Lab 6: Conditional Processing COE 205 Lab Manual Lab 6: Conditional Processing Page 56 Lab 6: Conditional Processing Contents 6.1. Unconditional Jump 6.2. The Compare Instruction 6.3. Conditional Jump Instructions 6.4. Finding the

More information

Build a program in Release mode and an executable file project.exe is created in Release folder. Run it.

Build a program in Release mode and an executable file project.exe is created in Release folder. Run it. Assembly Language and System Software Lab Exercise. Finish all the lab exercise under 50 minutes. In this lab exercise, you will learn to use the floating point unit (FPU). The FPU maintains a stack which

More information

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 7. Procedures and the Stack

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 7. Procedures and the Stack Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 7 Procedures and the Stack April, 2014 1 Assembly Language LAB Runtime Stack and Stack

More information

Lab 3: Defining Data and Symbolic Constants

Lab 3: Defining Data and Symbolic Constants COE 205 Lab Manual Lab 3: Defining Data and Symbolic Constants - page 25 Lab 3: Defining Data and Symbolic Constants Contents 3.1. MASM Data Types 3.2. Defining Integer Data 3.3. Watching Variables using

More information

Assembly Language for Intel-Based Computers, 4 th Edition

Assembly Language for Intel-Based Computers, 4 th Edition Assembly Language for Intel-Based Computers, 4 th Edition Kip R Irvine Chapter 5: Procedures Lecture 19: Procedures Procedure s parameters Slides prepared by Kip R Irvine Revision date: 08/22/2002 Modified

More information

Assembly Language for Intel-Based Computers, 5 th Edition. Kip Irvine. Chapter 3: Assembly Language Fundamentals

Assembly Language for Intel-Based Computers, 5 th Edition. Kip Irvine. Chapter 3: Assembly Language Fundamentals Assembly Language for Intel-Based Computers, 5 th Edition Kip Irvine Chapter 3: Assembly Language Fundamentals Chapter Overview Basic Elements of Assembly Language Example: Adding and Subtracting Integers

More information

NEW CEIBO DEBUGGER. Menus and Commands

NEW CEIBO DEBUGGER. Menus and Commands NEW CEIBO DEBUGGER Menus and Commands Ceibo Debugger Menus and Commands D.1. Introduction CEIBO DEBUGGER is the latest software available from Ceibo and can be used with most of Ceibo emulators. You will

More information

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 10. Advanced Procedures

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 10. Advanced Procedures Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 10 Advanced Procedures May, 2014 1 Assembly Language LAB Stack Parameters There are

More information

Chapter 3: Assembly Language Fundamentals. Cristina G. Rivera

Chapter 3: Assembly Language Fundamentals. Cristina G. Rivera Chapter 3: Assembly Language Fundamentals Cristina G. Rivera Basic Elements of Assembly Language Example: Adding and Subtracting Integers Assembling, Linking, and Running Programs Defining Data Symbolic

More information

Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 3: Assembly Language Fundamentals

Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 3: Assembly Language Fundamentals Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine Chapter 3: Assembly Language Fundamentals (c) Pearson Education, 2002. Chapter Overview Basic Elements of Assembly Language Example:

More information

Assembly Language Programming

Assembly Language Programming Assembly Language Programming Integer Constants Optional leading + or sign Binary, decimal, hexadecimal, or octal digits Common radix characters: h hexadecimal d decimal b binary r encoded real q/o - octal

More information

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 8. Conditional Processing

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB. Lab # 8. Conditional Processing Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 8 Conditional Processing April, 2014 1 Assembly Language LAB Unconditional Jump The

More information

Assembly Language for Intel-Based Computers, 5 th Edition. Chapter 3: Assembly Language Fundamentals

Assembly Language for Intel-Based Computers, 5 th Edition. Chapter 3: Assembly Language Fundamentals Assembly Language for Intel-Based Computers, 5 th Edition Kip Irvine Chapter 3: Assembly Language Fundamentals Slides prepared by the author Revision date: June 4, 2006 (c) Pearson Education, 2006-2007.

More information

Chapter Overview. Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 3: Assembly Language Fundamentals.

Chapter Overview. Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 3: Assembly Language Fundamentals. Assembly Language for Intel-Based Computers, 4 th Edition Chapter 3: Assembly Language Fundamentals Slides prepared by Kip R. Irvine Revision date: 09/15/2002 Kip R. Irvine Chapter Overview Basic Elements

More information

Marking Scheme. Examination Paper Department of CE. Module: Microprocessors (630313)

Marking Scheme. Examination Paper Department of CE. Module: Microprocessors (630313) Philadelphia University Faculty of Engineering Marking Scheme Examination Paper Department of CE Module: Microprocessors (630313) Final Exam Second Semester Date: 08/06/2014 Section 1 Weighting 40% of

More information

Assembly Language for Intel-Based Computers, 5 th Edition

Assembly Language for Intel-Based Computers, 5 th Edition Assembly Language for Intel-Based Computers, 5 th Edition Kip Irvine Chapter 3: Assembly Language Fundamentals Slides prepared by the author Revision date: June 4, 2006 (c) Pearson Education, 2006-2007.

More information

COMPUTER ENGINEERING DEPARTMENT

COMPUTER ENGINEERING DEPARTMENT Page 1 of 11 COMPUTER ENGINEERING DEPARTMENT December 31, 2007 COE 205 COMPUTER ORGANIZATION & ASSEMBLY PROGRAMMING Major Exam II First Semester (071) Time: 7:00 PM-9:30 PM Student Name : KEY Student ID.

More information

Assembly Language for Intel-Based Computers, 5 th Edition. Chapter 9: Strings and Arrays

Assembly Language for Intel-Based Computers, 5 th Edition. Chapter 9: Strings and Arrays Assembly Language for Intel-Based Computers, 5 th Edition Kip R. Irvine Chapter 9: Strings and Arrays Slide show prepared by the author Revision date: June 4, 2006 (c) Pearson Education, 2006-2007. All

More information

Chapter 3: Addressing Modes

Chapter 3: Addressing Modes Chapter 3: Addressing Modes Chapter 3 Addressing Modes Note: Adapted from (Author Slides) Instructor: Prof. Dr. Khalid A. Darabkh 2 Introduction Efficient software development for the microprocessor requires

More information

Macros. Introducing Macros Defining Macros Invoking Macros Macro Examples Nested Macros Example Program: Wrappers

Macros. Introducing Macros Defining Macros Invoking Macros Macro Examples Nested Macros Example Program: Wrappers Macros Introducing Macros Defining Macros Invoking Macros Macro Examples Nested Macros Example Program: Wrappers Irvine, Kip R. Assembly Language for Intel-Based Computers, 2003. 1 Introducing Macros A

More information

We can study computer architectures by starting with the basic building blocks. Adders, decoders, multiplexors, flip-flops, registers,...

We can study computer architectures by starting with the basic building blocks. Adders, decoders, multiplexors, flip-flops, registers,... COMPUTER ARCHITECTURE II: MICROPROCESSOR PROGRAMMING We can study computer architectures by starting with the basic building blocks Transistors and logic gates To build more complex circuits Adders, decoders,

More information

EECE416 :Microcomputer Fundamentals and Design. X86 Assembly Programming Part 1. Dr. Charles Kim

EECE416 :Microcomputer Fundamentals and Design. X86 Assembly Programming Part 1. Dr. Charles Kim EECE416 :Microcomputer Fundamentals and Design X86 Assembly Programming Part 1 Dr. Charles Kim Department of Electrical and Computer Engineering Howard University www.mwftr.com 1 Multiple Address Access

More information

Assembly Language for Intel-Based Computers, 4 th Edition. Lecture 25: Interface With High-Level Language

Assembly Language for Intel-Based Computers, 4 th Edition. Lecture 25: Interface With High-Level Language Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine Lecture 25: Interface With High-Level Language Slide show prepared by Kip R. Irvine, Revision date: 07/07/2002 Modified on April

More information

Assembly Fundamentals

Assembly Fundamentals Chapter Overview Assembly Fundamentals Basic Elements of Assembly Language Example: Adding and Subtracting Integers Assembling, Linking, and Running Programs Defining Data Symbolic Constants Computer Organization

More information

Constants and Expressions. Lecture 7: Assembly Language Programs. Constants and Expressions (cont.) Statements. Names. Assembly Directives

Constants and Expressions. Lecture 7: Assembly Language Programs. Constants and Expressions (cont.) Statements. Names. Assembly Directives Lecture 7: Assembly Language Programs Basic elements of assembly language Assembler directives Data allocation directives Data movement instructions Assembling, linking, and debugging Using TASM Constants

More information

Practical Malware Analysis

Practical Malware Analysis Practical Malware Analysis Ch 4: A Crash Course in x86 Disassembly Revised 1-16-7 Basic Techniques Basic static analysis Looks at malware from the outside Basic dynamic analysis Only shows you how the

More information

Lecture 15 Intel Manual, Vol. 1, Chapter 3. Fri, Mar 6, Hampden-Sydney College. The x86 Architecture. Robb T. Koether. Overview of the x86

Lecture 15 Intel Manual, Vol. 1, Chapter 3. Fri, Mar 6, Hampden-Sydney College. The x86 Architecture. Robb T. Koether. Overview of the x86 Lecture 15 Intel Manual, Vol. 1, Chapter 3 Hampden-Sydney College Fri, Mar 6, 2009 Outline 1 2 Overview See the reference IA-32 Intel Software Developer s Manual Volume 1: Basic, Chapter 3. Instructions

More information

6/20/2011. Introduction. Chapter Objectives Upon completion of this chapter, you will be able to:

6/20/2011. Introduction. Chapter Objectives Upon completion of this chapter, you will be able to: Introduction Efficient software development for the microprocessor requires a complete familiarity with the addressing modes employed by each instruction. This chapter explains the operation of the stack

More information

Course Syllabus [1/2]

Course Syllabus [1/2] Course Syllabus [1/2] Instructor 逄愛君, acpang@csie.ntu.edu.tw Office Number: 417, Office Hour: 15:00~17:00 (Thursday) Textbook Assembly Language for Intel-Based Computers, Kip R. Irvine, Pearson Education,

More information

Microprocessors ( ) Fall 2010/2011 Lecture Notes # 15. Stack Operations. 10 top

Microprocessors ( ) Fall 2010/2011 Lecture Notes # 15. Stack Operations. 10 top Microprocessors (0630371) Fall 2010/2011 Lecture Notes # 15 Stack Operations Objectives of the Lecture Runtime Stack PUSH Operation POP Operation Initializing the Stack PUSH and POP Instructions Stack

More information

Constants and. Lecture 7: Assembly Language Programs. Expressions (cont.) Constants and. Statements. Expressions

Constants and. Lecture 7: Assembly Language Programs. Expressions (cont.) Constants and. Statements. Expressions Lecture 7: Assembly Language Programs Basic elements of assembly language Assembler directives Data allocation directives Data movement instructions Assembling, linking, and debugging Using TASM Constants

More information

Memory Models. Registers

Memory Models. Registers Memory Models Most machines have a single linear address space at the ISA level, extending from address 0 up to some maximum, often 2 32 1 bytes or 2 64 1 bytes. Some machines have separate address spaces

More information

The x86 Architecture

The x86 Architecture The x86 Architecture Lecture 24 Intel Manual, Vol. 1, Chapter 3 Robb T. Koether Hampden-Sydney College Fri, Mar 20, 2015 Robb T. Koether (Hampden-Sydney College) The x86 Architecture Fri, Mar 20, 2015

More information

MATH CO-PROCESSOR Rajiv R Bhandari

MATH CO-PROCESSOR Rajiv R Bhandari MATH CO-PROCESSOR 8087 1 Rajiv R Bhandari Compatible Processor and Coprocessor Processors 1. 8086 & 8088 2. 80286 3. 80386DX 4. 80386SX 5. 80486DX 6. 80486SX Coprocessors 1. 8087 2. 80287,80287XL 3. 80287,80387DX

More information

Dr. Ramesh K. Karne Department of Computer and Information Sciences, Towson University, Towson, MD /12/2014 Slide 1

Dr. Ramesh K. Karne Department of Computer and Information Sciences, Towson University, Towson, MD /12/2014 Slide 1 Dr. Ramesh K. Karne Department of Computer and Information Sciences, Towson University, Towson, MD 21252 rkarne@towson.edu 11/12/2014 Slide 1 Intel x86 Aseembly Language Assembly Language Assembly Language

More information

Computer Architecture and Assembly Language. Practical Session 5

Computer Architecture and Assembly Language. Practical Session 5 Computer Architecture and Assembly Language Practical Session 5 Addressing Mode - "memory address calculation mode" An addressing mode specifies how to calculate the effective memory address of an operand.

More information

LAB WORK NO. 3 TURBO DEBUGGER ENVIRONMENT

LAB WORK NO. 3 TURBO DEBUGGER ENVIRONMENT LAB WORK NO. 3 TURBO DEBUGGER ENVIRONMENT 1. Objective of the lab work The purpose of this lab is to be able to debug programs written in assembly language and general executables, using a debugging tool.

More information

Assembly Language Fundamentals

Assembly Language Fundamentals Computer Organization & Assembly Languages Assembly Language Fundamentals Pu-Jen Cheng Adapted from the slides prepared by Kip Irvine for the book, Assembly Language for Intel-Based Computers, 5th Ed.

More information

Experiment 8 8 Subroutine Handling Instructions and Macros

Experiment 8 8 Subroutine Handling Instructions and Macros Introduction Experiment 8 8 Subroutine Handling Instructions and Macros In this experiment you will be introduced to subroutines and how to call them. You will verify the exchange of data between a main

More information

VARDHAMAN COLLEGE OF ENGINEERING (AUTONOMOUS) Shamshabad, Hyderabad

VARDHAMAN COLLEGE OF ENGINEERING (AUTONOMOUS) Shamshabad, Hyderabad Introduction to MS-DOS Debugger DEBUG In this laboratory, we will use DEBUG program and learn how to: 1. Examine and modify the contents of the 8086 s internal registers, and dedicated parts of the memory

More information

Module 3 Instruction Set Architecture (ISA)

Module 3 Instruction Set Architecture (ISA) Module 3 Instruction Set Architecture (ISA) I S A L E V E L E L E M E N T S O F I N S T R U C T I O N S I N S T R U C T I O N S T Y P E S N U M B E R O F A D D R E S S E S R E G I S T E R S T Y P E S O

More information

Introduction to Assembly Language

Introduction to Assembly Language Introduction to Assembly Language COE 205 Computer Organization and Assembly Language Computer Engineering Department King Fahd University of Petroleum and Minerals Presentation Outline Basic Elements

More information

Lab 4: Basic Instructions and Addressing Modes

Lab 4: Basic Instructions and Addressing Modes COE 205 Lab Manual Lab 4: Basic Instructions and Addressing Modes - page 36 Lab 4: Basic Instructions and Addressing Modes Contents 4.1. Data Transfer Instructions 4.2. Addition and Subtraction 4.3. Data

More information

Computer Science Final Examination Wednesday December 13 th 2006

Computer Science Final Examination Wednesday December 13 th 2006 Computer Science 03-60-266 Final Examination Wednesday December 13 th 2006 Dr. Alioune Ngom Last Name: First Name: Student Number: INSTRUCTIONS EXAM DURATION IS 3 hours. OPEN NOTES EXAM: lecture notes,

More information

Program Exploitation Intro

Program Exploitation Intro Program Exploitation Intro x86 Assembly 04//2018 Security 1 Univeristà Ca Foscari, Venezia What is Program Exploitation "Making a program do something unexpected and not planned" The right bugs can be

More information

Stack -- Memory which holds register contents. Will keep the EIP of the next address after the call

Stack -- Memory which holds register contents. Will keep the EIP of the next address after the call Call without Parameter Value Transfer What are involved? ESP Stack Pointer Register Grows by 4 for EIP (return address) storage Stack -- Memory which holds register contents Will keep the EIP of the next

More information

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB

Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2125: Assembly Language LAB Lab # 9 Integer Arithmetic and Bit Manipulation April, 2014 1 Assembly Language LAB Bitwise

More information

EECE.3170: Microprocessor Systems Design I Summer 2017 Homework 4 Solution

EECE.3170: Microprocessor Systems Design I Summer 2017 Homework 4 Solution 1. (40 points) Write the following subroutine in x86 assembly: Recall that: int f(int v1, int v2, int v3) { int x = v1 + v2; urn (x + v3) * (x v3); Subroutine arguments are passed on the stack, and can

More information

Marking Scheme. Examination Paper. Module: Microprocessors (630313)

Marking Scheme. Examination Paper. Module: Microprocessors (630313) Philadelphia University Faculty of Engineering Marking Scheme Examination Paper Department of CE Module: Microprocessors (630313) Final Exam Second Semester Date: 12/06/2017 Section 1 Weighting 40% of

More information

Modesto Junior College Course Outline of Record CMPSC 241

Modesto Junior College Course Outline of Record CMPSC 241 Modesto Junior College Course Outline of Record CMPSC 241 I. OVERVIEW The following information will appear in the 2010-2011 catalog CMPSC 241 Assembly Language Programming Prerequisite: Satisfactory completion

More information

Chapter 3 (Part a) Assembly Language Fundamentals

Chapter 3 (Part a) Assembly Language Fundamentals Islamic University Gaza Engineering Faculty Department of Computer Engineering ECOM 2025: Assembly Language Discussion Chapter 3 (Part a) Assembly Language Fundamentals Eng. Eman R. Habib February, 2014

More information

The Instruction Set. Chapter 5

The Instruction Set. Chapter 5 The Instruction Set Architecture Level(ISA) Chapter 5 1 ISA Level The ISA level l is the interface between the compilers and the hardware. (ISA level code is what a compiler outputs) 2 Memory Models An

More information

Computer Architecture and Assembly Language. Practical Session 3

Computer Architecture and Assembly Language. Practical Session 3 Computer Architecture and Assembly Language Practical Session 3 Advanced Instructions division DIV r/m - unsigned integer division IDIV r/m - signed integer division Dividend Divisor Quotient Remainder

More information

Low Level Programming Lecture 2. International Faculty of Engineerig, Technical University of Łódź

Low Level Programming Lecture 2. International Faculty of Engineerig, Technical University of Łódź Low Level Programming Lecture 2 Intel processors' architecture reminder Fig. 1. IA32 Registers IA general purpose registers EAX- accumulator, usually used to store results of integer arithmetical or binary

More information

GLOBAL EDITION. Assembly Language. for x86 Processors SEVENTH EDITION. Kip R. Irvine

GLOBAL EDITION. Assembly Language. for x86 Processors SEVENTH EDITION. Kip R. Irvine GLOBAL EDITION Assembly Language for x86 Processors SEVENTH EDITION Kip R. Irvine Vice President and Editorial Director, ECS: Marcia Horton Executive Editor: Tracy Johnson Executive Marketing Manager:

More information

Computer Organization and Assembly Language. Lab Session 01

Computer Organization and Assembly Language. Lab Session 01 Objective: Lab Session 01 Introduction to Assembly Language Tools and Familiarization with Emu8086 environment To be able to understand Data Representation and perform conversions from one system to another

More information

Lab 3. The Art of Assembly Language (II)

Lab 3. The Art of Assembly Language (II) Lab. The Art of Assembly Language (II) Dan Bruce, David Clark and Héctor D. Menéndez Department of Computer Science University College London October 2, 2017 License Creative Commons Share Alike Modified

More information

HUDSON VALLEY COMMUNITY COLLEGE TROY, NEW YORK COURSE OUTLINE

HUDSON VALLEY COMMUNITY COLLEGE TROY, NEW YORK COURSE OUTLINE ACADEMIC YEAR 2017-2018 HUDSON VALLEY COMMUNITY COLLEGE TROY, NEW YORK COURSE OUTLINE COURSE TITLE: Assembly Language And Computer Architecture COURSE SUBJECT AND NUMBER: CISS 280 DEPARTMENT: Computing

More information

Assembly Language for Intel-Based Computers, 4 th Edition. Kip R. Irvine. Chapter 2: IA-32 Processor Architecture

Assembly Language for Intel-Based Computers, 4 th Edition. Kip R. Irvine. Chapter 2: IA-32 Processor Architecture Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine Chapter 2: IA-32 Processor Architecture Chapter Overview General Concepts IA-32 Processor Architecture IA-32 Memory Management Components

More information

Assembly Language Programming: Procedures. EECE416 uc. Charles Kim Howard University. Fall

Assembly Language Programming: Procedures. EECE416 uc. Charles Kim Howard University. Fall Assembly Language Programming: Procedures EECE416 uc Charles Kim Howard University Fall 2013 www.mwftr.com Before we start Schedule of the next few weeks T Nov 19: Procedure and Calls (continued) R Nov

More information

Experiment #5. Using BIOS Services and DOS functions Part 1: Text-based Graphics

Experiment #5. Using BIOS Services and DOS functions Part 1: Text-based Graphics Experiment #5 Using BIOS Services and DOS functions Part 1: Text-based Graphics 5.0 Objectives: The objective of this experiment is to introduce BIOS and DOS interrupt service routines to be utilized in

More information

Hardware and Software Architecture. Chapter 2

Hardware and Software Architecture. Chapter 2 Hardware and Software Architecture Chapter 2 1 Basic Components The x86 processor communicates with main memory and I/O devices via buses Data bus for transferring data Address bus for the address of a

More information

Assembly Language. Lecture 2 - x86 Processor Architecture. Ahmed Sallam

Assembly Language. Lecture 2 - x86 Processor Architecture. Ahmed Sallam Assembly Language Lecture 2 - x86 Processor Architecture Ahmed Sallam Introduction to the course Outcomes of Lecture 1 Always check the course website Don t forget the deadline rule!! Motivations for studying

More information

EEM336 Microprocessors I. Addressing Modes

EEM336 Microprocessors I. Addressing Modes EEM336 Microprocessors I Addressing Modes Introduction Efficient software development for the microprocessor requires a complete familiarity with the addressing modes employed by each instruction. This

More information

CSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs

CSC 2400: Computer Systems. Towards the Hardware: Machine-Level Representation of Programs CSC 2400: Computer Systems Towards the Hardware: Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32)

More information

Assembly Language Lab # 9

Assembly Language Lab # 9 Faculty of Engineering Computer Engineering Department Islamic University of Gaza 2011 Assembly Language Lab # 9 Stacks and Subroutines Eng. Doaa Abu Jabal Assembly Language Lab # 9 Stacks and Subroutines

More information

Assembly Language Each statement in an assembly language program consists of four parts or fields.

Assembly Language Each statement in an assembly language program consists of four parts or fields. Chapter 3: Addressing Modes Assembly Language Each statement in an assembly language program consists of four parts or fields. The leftmost field is called the label. - used to identify the name of a memory

More information

Summary: Direct Code Generation

Summary: Direct Code Generation Summary: Direct Code Generation 1 Direct Code Generation Code generation involves the generation of the target representation (object code) from the annotated parse tree (or Abstract Syntactic Tree, AST)

More information

Faculty of Engineering Student Number:

Faculty of Engineering Student Number: Philadelphia University Student Name: Faculty of Engineering Student Number: Dept. of Computer Engineering Final Exam, Second Semester: 2013/2014 Course Title: Microprocessors Date: 08/06/2014 Course No:

More information

SOEN228, Winter Revision 1.2 Date: October 25,

SOEN228, Winter Revision 1.2 Date: October 25, SOEN228, Winter 2003 Revision 1.2 Date: October 25, 2003 1 Contents Flags Mnemonics Basic I/O Exercises Overview of sample programs 2 Flag Register The flag register stores the condition flags that retain

More information

Intel Architecture Segment:Offset Memory Addressing

Intel Architecture Segment:Offset Memory Addressing Name: Date: Lab Section: Lab partner s name: Lab PC Number: Objectives: Understanding video memory and character mapping of CGA characters in ROM BIOS, using the DOS debug command. Writing simple assembly-language

More information

Inline Assembler. Willi-Hans Steeb and Yorick Hardy. International School for Scientific Computing

Inline Assembler. Willi-Hans Steeb and Yorick Hardy. International School for Scientific Computing Inline Assembler Willi-Hans Steeb and Yorick Hardy International School for Scientific Computing e-mail: steebwilli@gmail.com Abstract We provide a collection of inline assembler programs. 1 Using the

More information

Floating Point Instructions

Floating Point Instructions Floating Point Instructions Ned Nedialkov McMaster University Canada SE 3F03 March 2013 Outline Storing data Addition Subtraction Multiplication Division Comparison instructions Some more instructions

More information

Marking Scheme. Examination Paper. Module: Microprocessors (630313)

Marking Scheme. Examination Paper. Module: Microprocessors (630313) Philadelphia University Faculty of Engineering Marking Scheme Examination Paper Department of CE Module: Microprocessors (630313) Final Exam First Semester Date: 30/01/2018 Section 1 Weighting 40% of the

More information

ORG ; TWO. Assembly Language Programming

ORG ; TWO. Assembly Language Programming Dec 2 Hex 2 Bin 00000010 ORG ; TWO Assembly Language Programming OBJECTIVES this chapter enables the student to: Explain the difference between Assembly language instructions and pseudo-instructions. Identify

More information

Assembly Language. Lecture 2 x86 Processor Architecture

Assembly Language. Lecture 2 x86 Processor Architecture Assembly Language Lecture 2 x86 Processor Architecture Ahmed Sallam Slides based on original lecture slides by Dr. Mahmoud Elgayyar Introduction to the course Outcomes of Lecture 1 Always check the course

More information

CS401 - Computer Architecture and Assembly Language Programming Glossary By

CS401 - Computer Architecture and Assembly Language Programming Glossary By CS401 - Computer Architecture and Assembly Language Programming Glossary By absolute address : A virtual (not physical) address within the process address space that is computed as an absolute number.

More information

We will first study the basic instructions for doing multiplications and divisions

We will first study the basic instructions for doing multiplications and divisions MULTIPLICATION, DIVISION AND NUMERICAL CONVERSIONS We will first study the basic instructions for doing multiplications and divisions We then use these instructions to 1. Convert a string of ASCII digits

More information

Chapter Overview. Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 1: Basic Concepts. Printing this Slide Show

Chapter Overview. Assembly Language for Intel-Based Computers, 4 th Edition. Chapter 1: Basic Concepts. Printing this Slide Show Assembly Language for Intel-Based Computers, 4 th Edition Kip R. Irvine Chapter 1: Basic Concepts Chapter Overview Welcome to Assembly Language Virtual Machine Concept Data Representation Boolean Operations

More information

Lab 10 CST8214 Ian! D. Allen Fall 2007

Lab 10 CST8214 Ian! D. Allen Fall 2007 Name: Date: Lab Section: Lab partner s name: Lab PC Number: Objectives: Understanding video memory and character mapping of CGA characters in ROM BIOS, using the DOS debug command. Writing simple assembly

More information

ECOM 2325 Computer Organization and Assembly Language. Instructor: Ruba A.Salamah INTRODUCTION

ECOM 2325 Computer Organization and Assembly Language. Instructor: Ruba A.Salamah INTRODUCTION ECOM 2325 Computer Organization and Assembly Language Instructor: Ruba A.Salamah INTRODUCTION Overview Welcome to ECOM 2325 Assembly-, Machine-, and High-Level Languages Assembly Language Programming Tools

More information

Instruction Set extensions to X86. Floating Point SIMD instructions

Instruction Set extensions to X86. Floating Point SIMD instructions Instruction Set extensions to X86 Some extensions to x86 instruction set intended to accelerate 3D graphics AMD 3D-Now! Instructions simply accelerate floating point arithmetic. Accelerate object transformations

More information

CS 31: Intro to Systems ISAs and Assembly. Martin Gagné Swarthmore College February 7, 2017

CS 31: Intro to Systems ISAs and Assembly. Martin Gagné Swarthmore College February 7, 2017 CS 31: Intro to Systems ISAs and Assembly Martin Gagné Swarthmore College February 7, 2017 ANNOUNCEMENT All labs will meet in SCI 252 (the robot lab) tomorrow. Overview How to directly interact with hardware

More information

CSC 8400: Computer Systems. Machine-Level Representation of Programs

CSC 8400: Computer Systems. Machine-Level Representation of Programs CSC 8400: Computer Systems Machine-Level Representation of Programs Towards the Hardware High-level language (Java) High-level language (C) assembly language machine language (IA-32) 1 Compilation Stages

More information