AM2: Protected-Mode Programming
|
|
- Brendan Stanley
- 5 years ago
- Views:
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
: 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 informationAssembly 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 informationLab 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 informationAssembly 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 informationAssembly 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 informationIslamic 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 informationAssembly 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 informationAssembly 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 informationLibraries 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 informationMarking 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 informationLibraries 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 informationCOE 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 informationReal 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 informationRequired 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 informationIn 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 informationLab 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 informationLab 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 informationBuild 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 informationIslamic 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 informationLab 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 informationAssembly 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 informationAssembly 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 informationNEW 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 informationIslamic 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 informationChapter 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 informationAssembly 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 informationAssembly 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 informationIslamic 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 informationAssembly 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 informationChapter 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 informationMarking 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 informationAssembly 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 informationCOMPUTER 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 informationAssembly 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 informationChapter 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 informationMacros. 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 informationWe 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 informationEECE416 :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 informationAssembly 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 informationAssembly 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 informationConstants 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 informationPractical 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 informationLecture 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 information6/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 informationCourse 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 informationMicroprocessors ( ) 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 informationConstants 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 informationMemory 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 informationThe 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 informationMATH 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 informationDr. 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 informationComputer 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 informationLAB 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 informationAssembly 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 informationExperiment 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 informationVARDHAMAN 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 informationModule 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 informationIntroduction 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 informationLab 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 informationComputer 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 informationProgram 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 informationStack -- 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 informationIslamic 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 informationEECE.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 informationMarking 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 informationModesto 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 informationChapter 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 informationThe 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 informationComputer 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 informationLow 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 informationGLOBAL 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 informationComputer 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 informationLab 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 informationHUDSON 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 informationAssembly 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 informationAssembly 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 informationExperiment #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 informationHardware 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 informationAssembly 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 informationEEM336 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 informationCSC 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 informationAssembly 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 informationAssembly 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 informationSummary: 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 informationFaculty 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 informationSOEN228, 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 informationIntel 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 informationInline 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 informationFloating 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 informationMarking 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 informationORG ; 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 informationAssembly 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 informationCS401 - 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 informationWe 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 informationChapter 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 informationLab 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 informationECOM 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 informationInstruction 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 informationCS 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 informationCSC 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