Академический Документы
Профессиональный Документы
Культура Документы
t from
a known position. Theoretically, only absolute addressing is required; however, other addressing modes are introduced in order to improve efficiency.
1 Absolute Addressing:
Absolute Addressing uses the actual address of an operand; either a memory location (e.g., CLR.B $1234) or, If a register is involved, this type is also called data register direct, e.g., MOVE.B D2,$2000
2 Immediate Addressing:
With Immediate Addressing, the actual operand is part of the instruction; e.g., MOVE.B #25,D2
EECC250 - Shaaban
#1 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#2 Lec # 2 Winter99 12-1-99
Examples
Byte data addressed by A0 are copied to D3. Then the contents of A0 are incremented by 1. The word data addressed by A0 are copied to D3. Then the contents of A0 are incremented by 2. The long word data addressed by A0 are copied to D3. Then the contents of A0 are incremented by 4. The address stored in A0 is first decremented by 1. Then the data addressed are copied to D3. The address stored in A0 is first decremented by 2. Then the data addressed are copied to D3. The address stored in A0 is first decremented by 4. Then the data addressed are copied to D3.
MOVE.W (A0)+,D3
MOVE.L (A0)+,D3
MOVE.B -(A0),D3
MOVE.W -(A0),D3
MOVE.L -(A0),D3
EECC250 - Shaaban
#3 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#4 Lec # 2 Winter99 12-1-99
Examples:
MOVE.B D1,D2 MOVE.B D1,1234 MOVE.B 1234,D1 MOVE.B 1234,2000 MOVE.B #4,D0 MOVE.B #4,1234
EECC250 - Shaaban
#6 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#7 Lec # 2 Winter99 12-1-99
Move to CCR
Copies the lower order byte of the operand to the CCR register. Source Operand: All except address register direct. Destination Operand: CCR register.
EXG
Exchanges the entire 32-bit contents of two registers. Frequently used to copy an address register to a data register for processing. No effect on CCR. Source Operand: Address or data register. Destination Operand: Address or data register.
EECC250 - Shaaban
#8 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#9 Lec # 2 Winter99 12-1-99
LEA
Copies an effective address into an address register.
Source Operand: All except data register, address register direct, address register indirect with pre-decrement or post-increment or immediate. Destination Operand: Address register No effect on CCR.
EECC250 - Shaaban
#10 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#11 Lec # 2 Winter99 12-1-99
Action
Loads the absolute address Loads the contents of another address register Loads the contents of an address register plus a displacement. Loads the contents of an address register plus a data register plus a displacement (used for index addressing).
EECC250 - Shaaban
#12 Lec # 2 Winter99 12-1-99
LEA (12,A0),A5
LEA (12,A0,D4.L),A5
Compare Instructions
All compare instructions subtract the source operand, usually the contents of one register (or memory location) from the contents of the destination operand, usually another register (or memory location) in order to set the CCR (except the X-bit). The results of the subtraction are discarded. Compare instructions include the following: CMP
Source operand: Any of the addressing modes Destination: Must be a data register. Destination: Must be an address register.
CMPI
Source operand: An immediate value Destination: Any of the addressing modes except address register direct or immediate. Only addressing mode permitted is address register indirect with auto- incrementing.
EECC250 - Shaaban
#13 Lec # 2 Winter99 12-1-99
Evaluate X - Y If X is greater or equal to Y branch IF X < Y THEN P = Q IF X >= Y THEN P = R Exit point for code-fragment
EECC250 - Shaaban
#14 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#15 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#16 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#17 Lec # 2 Winter99 12-1-99
BVS
EECC250 - Shaaban
#18 Lec # 2 Winter99 12-1-99
Instruction
Branch on not equal Branch on equal Branch on not negative Branch on negative Branch on carry clear Branch on carry set Branch on overflow clear Branch on overflow set
Branch Taken If
Z=0 Z=1 N=0 N=1 C=0 C=1 V=0 V=1
EECC250 - Shaaban
#19 Lec # 2 Winter99 12-1-99
Instruction
Branch Taken If
( N=1 AND V=1) OR (N = 0 AND V=0)
BGT
(N=1 AND V=1 AND Z=0) OR (N=0 AND V=0 AND Z=0) Z=1 OR ( N=1 AND V=0) OR (N=0 AND V =1) (N=1 AND V=0) OR (N=0 AND V=1)
BLE
BLT
EECC250 - Shaaban
#20 Lec # 2 Winter99 12-1-99
Instruction
Branch on higher than or equal Branch on higher than Branch on less than or equal Branch on less than
Branch Taken If
C=0 C=0 AND Z =0 C=1 AND Z=1 C=1
EECC250 - Shaaban
#21 Lec # 2 Winter99 12-1-99
JMP
Jump to an address that can be changed during execution Examples:
EECC250 - Shaaban
#23 Lec # 2 Winter99 12-1-99
must be used instead of MOVE, ADD, SUB and CMP, respectively. Address instructions only apply to words and long words. In the case of a word operation, the source operand is sign extended to a long word,
e.g, $0004 becomes $00000004 and $FFF4 becomes $FFFFFFF4.
Address instructions do not change any of condition codes (bits of the CCR). EECC250 - Shaaban
#24 Lec # 2 Winter99 12-1-99
Exit X Y
EECC250 - Shaaban
#25 Lec # 2 Winter99 12-1-99
LOOP
EECC250 - Shaaban
#26 Lec # 2 Winter99 12-1-99
EECC250 - Shaaban
#27 Lec # 2 Winter99 12-1-99
* pointers towards the middle of the string until they meet. LEA String,A0 Make A0 point to the beginning Loop2 MOVE.B -(A1),D0 Save the bottom byte
CMPA.L BHS MOVE.B MOVE.B * BRA Exit STOP ORG String DS.B END
If A0 has reached or passed A1 Then the string is reversed Move the top to the bottom byte Move the previously saved bottom byte to the top byte Loop back for another byte
EECC250 - Shaaban
#28 Lec # 2 Winter99 12-1-99