Download presentation
Presentation is loading. Please wait.
Published byLanny Sugiarto Modified over 6 years ago
1
Morgan Kaufmann Publishers Computer Organization and Assembly Language
November 30, 2018 CS 206 D Computer Organization and Assembly Language Chapter 1 — Computer Abstractions and Technology
2
Chapter 6 –Symbolic Instruction and Addressing
Lecture 4 Chapter 6 –Symbolic Instruction and Addressing
3
Chapter Outline Instruction execution cycle Data Transfer Instruction
Basic Arithmetic Instruction The INT Instruction
4
Instruction execution cycle
program counter instruction queue Fetch Decode Fetch operands Execute Store output Instructions execute faster if the data is in a register
5
Registers Information inside the microprocessor is stored in registers. The registers are classified according to the functions they perform In general there are fourteen 16-bit registers: Data registers: AX, BX, CX, DX There are four general data registers. They hold data for an operation. Address registers: Segment Registers CS, DS, SS, ES Pointer and Index Registers: SP, BP, SI, DI They are divided into segment, pointer, and index registers. They hold the address of an instruction or data. Status register: It is called the FLAGS register. It keeps the current status of the processor.
6
Pointer and Index Registers
Data Registers General-purpose registers AX - the Accumulator BX - the Base Register CX - the Count Register DX - the Data Register AX --> AH,AL BX --> BH,BL CX --> CH,CL DX --> DH,DL CS - the Code Segment Register DS - the Data Segment Register SS - the Stack Segment Register ES - the Extra Segment Register SP - the Stack Pointer \ defaults to stack segment BP - the Base Pointer / SI - the Source Index Register DI - the Destination Register AX AH AL BH BL BX CX CH CL DX DH DL Segment Registers CS DS SS ES Pointer and Index Registers SI DI SP BP IP FLAGS Register
7
Data Registers: AX, BX, CX, DX
Low and High bytes of the data registers can be accessed separately AH, BH, CH, DH are the high bytes AL, BL, CL, DL are the low bytes Data Registers are general purpose registers but they also perform special functions AX : Accumulator Register Preferred register to use in arithmetic, logic and data transfer instructions because it generates the shortest Machine Language Code Must be used in multiplication and division operations Must also be used in I/O operations BX : Base Register Also serves as an address register CX : Count register Used as a loop counter Used in shift and rotate operations DX : Data register Used in multiplication and division Also used in I/O operations
8
Address Registers - Segment Registers CS, DS, SS, ES
Address registers store addresses of instructions and data in memory. These values are used by the processor to access memory locations. In the 8086 processor (16-bit processor): Memory is a collection of bytes, each memory byte has an address, starting with 0. The processor assigns a 20-bit physical address to its memory locations, thus it is possible to address 2 = 1,048,576 bytes (1M byte) of memory. The bytes in memory have addresses 00000h to 0FFFFFh. 20
9
Address Registers - Segment Registers CS, DS, SS, ES
To keep track of the various program segments, the 8086 is equipped with four segments registers to hold segment numbers: CS (Code Segment): contains the code segment number. DS (Data segment): contains the data segment number. SS (Stack Segment): contains the stack segment number. ES (Extra Segment): is used if a program needs to access a second data segment. one segment linear addresses Segmented memory addressing: absolute (linear) address is a combination of a 16-bit segment value added to a 16-bit offset
10
Pointer and Index Registers: SP, BP, SI, DI
Address Registers - Pointer and Index Registers: SP, BP, SI, DI SP (Stack Pointer) register is used in conjunction with SS for accessing the stack segment. BP (Base Pointer) register is used primarily to access data on the stack. However, unlike SP, BP can be used to access data in the other segments. SI (Source Index) register is used to point to memory locations in the data segment addressed by DS. By incrementing the contents of SI, we can easily access consecutive memory locations. DI (Destination Index) register performs the same functions as SI. There is a class of instructions, called string operations, that use DI to access memory locations addressed by ES.
11
Address Registers - Instruction Pointer (IP or PC)
IP/PC is updated each time an instruction is executed so that it will point to the next instruction. Unlike other registers, the IP/PC cannot be directly manipulated by an instruction (i.e. The instruction cannot contain IP as its operand).
12
Data Transfer Instruction
MOV MOVSX-MOVZX XCHG LEA
13
MOV Instruction The MOV (move) instruction is used to:
Transfer data between Registers. Transfer data between registers and memory locations. Move a number directly into a register or memory location. Syntax: MOV destination, source Example: MOV AX, WORD1 MOV AX, BX MOV AX, 'A' Note: any register can be used except CS & IP Before After AX AX WORD WORD1
14
Legal Combinations of operands for MOV
Destination Operand General Segment Memory Source operand register register location Constant General register yes yes yes no Segment register yes no yes no Memory location yes yes no no Constant yes no yes no Illegal: MOV WORD1, WORD2 • Legal: MOV AX, WORD2 MOV WORD1, AX Illegal: MOV DS, CS • Legal: MOV AX, CS MOV DS, AX
15
Type Agreement of Operands
The operands of any two-operand instruction must be of the same type (i.e. Both bytes or words). Illegal: MOV AX, BYTE1 However, the assembler will accept both of the following: MOV AH, 'A' moves 41H into AH MOV AX, 'A' moves 0041H into AX
16
MOVE-and-Fill Instruction (MOVSX-MOVZX)
The MOVSX (move) instruction is used to: Move a byte or word source to a word or doubleword destination. Use with signed arithmetic values Syntax: MOVSX destination, source Example: MOVSX CX, B . ; CX= The MOVZX (move) instruction is used to: Move a byte or word source to a word or doubleword destination. Use with unsigned arithmetic values Syntax: MOVZX destination, source Example: MOVZX CX, B . ;CX=
17
XCHG Instruction Destination Operand General Memory
The XCHG (exchange) operation is used to exchange the contents of: Two registers. A register and a memory location. Syntax: XCHG destination, source Example: XCHG AH, BL XCHG AX,WORD1 Destination Operand General Memory Source Operand register location General register yes yes Memory location yes no Before After AH AL AH AL BH BL BH BL 1A A
18
LEA Instruction LEA (Load Effective Address) puts a copy of the source offset address into the destination. Syntax: LEA destination, source Where destination is a general register and source is a memory location Example: MSG DB 41H, 42H, 43H LEA DX, MSG puts the offset address of the variable MSG into DX. Data Definition + Basic Instructions 17
19
Basic Arithmetic Instruction
ADD SUB INC DEC
20
ADD and SUB Instructions
The ADD (add) and SUB (subtract) instructions are used to: Add/subtract the contents of: Two registers. A register and a memory location. Add/subtract a number to/from a register or memory location. Syntax: ADD destination, source SUB destination, source Examples: ADD WORD1, AX SUB AX, DX Before After 01BC BC AX AX DF WORD WORD1 Before After FFFF AX AX DX DX
21
Legal Combinations of operands for ADD & SUB
Destination Operand General Memory Source Operand register location General register yes yes Memory location yes no Constant yes yes Illegal: ADD BYTE1, BYTE2 Legal: MOV AL, BYTE2 ADD BYTE1, AL
22
INC and DEC Instructions
INC (increment) is used to add 1 to the contents of a register or memory location. DEC (decrement) is used to subtract 1 from a register or memory location. Syntax: INC destination DEC destination Examples: INC WORD1 DEC BYTE1 Before After WORD WORD1 Before After BYTE BYTE1 FFFE FFFD
23
INT Instruction To invoke a DOS or BIOS routine, the INT (interrupt) instruction is used. Format: INT interrupt_number where interrupt_number is a number that specifies a routine.
24
INT 21h INT 21h may be used to invoke a large number of DOS functions.
A particular function is requested by placing a function number in the AH register and invoking INT 21h. Some of the functions are: INT 21h functions expect input values to be in certain registers and return output values in other registers. Function number Routine 1 single-key input 2 single-character output 9 character string output
25
INT 21h Function 1: Single-Key Input Input: AH = 1
Output: AL = ASCII code if character key is pressed = 0 if non-character key is pressed To invoke the routine, the following instructions should be executed: MOV AH,1 ; input key function INT 21H ; ASCII code in AL
26
INT 21h Function 2: Display a character or execute a control function
Input: AH = 2 DL = ASCII code of the character Output AL = ASCII code of the character To invoke the routine, the following instructions should be executed: MOV AH, 2 ; display character function MOV DL, '?' ; character is '?' (or any other character) INT 21H ; display character
27
INT 21h Function 2 may be used to perform control functions.
If DL contains the ASCII code of a control character, INT 21h causes the control function to be performed. The principal control characters are : ASCII code (Hex) Symbol Function 07H BEL beep (sounds a tone) 08H BS backspace 09H HT tab 0AH LF line feed (new line) 0DH CR carriage return (start of current line)
28
INT 21h Function 9: Display a string Input: AH = 9
DX = offset address of string. The string must end with a '$' character To invoke the routine, the following instructions should be executed: MOV MOV DS, AX MOV AH, 9 ; display string function LEA DX, MSG ; get message (Load Effective Address) INT 21H ; display string A program containing a data segment should begins with these two instructions
29
INT 21h Function 4CH: Returning control to DOS Input: AH = 4CH
To invoke the routine, the following instructions should be executed: MOV AH, 4CH ; DOS exit function INT 21H ; exit to DOS
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.