Addressing Modes in Assembly Language

 
Assembly Language
 
Part VIII
Addressing Modes
 
Department of Computer Science, Faculty of Science, Chiang Mai University
 
Outline
 
One-Dimensional Arrays
Addressing Modes
Two-Dimensional Arrays
Based Indexed Addressing Mode
 
204231: Computer Organization and Architecture
 
2
 
One-Dimensional Array A
 
204231: Computer Organization and Architecture
 
3
 
The DUP Operator
 
The DUP (duplicate) is used to define arrays
whose elements share a common initial value.
repeat_count
 
DUP (value)
GAMMA
 
DW
 
100 DUP (0)
DELTA
 
DB
 
212 DUP (?)
LINE
 
DB
 
5, 4, 3 DUP (2, 3 DUP (0), 1)
LINE
 
DB
 
5,4,
2
,
0
,
0
,
0
,
1
,
2
,
0
,
0
,
0
,
1
,
2
,
0
,
0
,
0
,
1
 
204231: Computer Organization and Architecture
 
4
 
One-Dimensional Array A
 
W
 
DW
 
10, 20, 30, 40, 50, 60
 
Offset address
 
Symbolic address
 
Decimal address
0200h
   
W
   
10
0202h
   
W + 2h
  
20
0204h
   
W + 4h
  
30
0206h
   
W + 6h
  
40
0208h
   
W + 8h
  
50
020Ah
  
W + Ah
  
60
 
204231: Computer Organization and Architecture
 
5
 
Addressing Modes
 
The way an operand is specified
register mode
: an operand is a register.
immediate mode
: an operand is a constant.
direct mode
: an operand is a variable.
MOV
 
AX, 0
ADD
 
ALPHA, AX
 
204231: Computer Organization and Architecture
 
6
 
Register Indirect Mode
 
[register]
The register is BX, SI, DI, or BP.
For BX, SI, or DI, the operand’s segment
number is contained in DS.
For BP, SS has the segment number.
 
204231: Computer Organization and Architecture
 
7
 
Suppose that SI contains 0100h, and
the word at 0100h contains 1234h.
 
MOV
 
AX, [SI]
 
; AX = 1234h
 
The CPU
1.
examines SI and obtains the offset address 100h,
2.
uses the address DS:0100h to obtain the value
1234h, and
3.
moves 1234h to AX.
MOV
 
AX, SI
 
; AX = 0100h
 
204231: Computer Organization and Architecture
 
8
 
Suppose that
 
BX contains 1000h
  
Offset 1000h contains 1BACh
SI contains 2000h
  
Offset 2000h contains 20FEh
DI contains 3000h
  
Offset 3000h contains 031Dh
 
where the above  offsets are in the data segment
addressed by DS.
 
204231: Computer Organization and Architecture
 
9
 
Tell which of the following instructions are legal.
If legal, give the source offset address and the
result or number moved.
 
     
Source offset
 
Result
a.
MOV  BX, [BX]
 
1000h
  
1BACh
b.
MOV  CX, [SI]
  
2000h
  
20FEh
c.
MOV  BX, [AX]
 
illegal source register
d.
ADD  [SI], [DI]
 
illegal memory-memory addition
e.
INC  [DI]
  
3000h
  
031Eh
 
204231: Computer Organization and Architecture
 
10
 
Write some code to sum in AX the elements
of the 10-element array W defined by
 
W
 
DW
 
10,20,30,40,50,60,70,80,90,100
 
11
 
204231: Computer Organization and Architecture
 
The idea is to set a pointer to the base of the array,
and let it move up the array, summing elements as
it goes.
 
  
XOR
 
AX, AX
 
; AX holds sum
  
LEA
 
SI, W
  
; SI points to array W
  
MOV
 
CX, 10
  
; CX has number of elements
ADDNOS:
  
ADD
 
AX, [SI]
 
; sum = sum + element
  
ADD
 
SI, 2
  
; move pointer to
     
; the next element
  
LOOP
 
ADDNOS
 
; loop until done
 
12
 
204231: Computer Organization and Architecture
 
Based and Indexed Addressing Mode
 
[register + displacement]
[displacement  + register]
[register] + displacement
displacement + [register]
displacement[register]
based
: BX(base register) or BP (base pointer)
indexed
: SI
 (source index) 
or
 
DI
 (destination index)
 
204231: Computer Organization and Architecture
 
13
 
Based and Indexed Addressing Mode
 
MOV
 
AX, W[BX]
MOV
 
AX, [W + BX]
MOV
 
AX, [BX + W]
MOV
 
AX, W + [BX]
MOV
 
AX, [BX] + W
 
204231: Computer Organization and Architecture
 
14
 
Rework the last example by using
based mode.
 
  
XOR
 
AX, AX
 
; AX holds sum
  
XOR
 
BX, BX
  
; clear base register
  
MOV
 
CX, 10
  
; CX has number of elements
ADDNOS:
  
ADD
 
AX, W[BX]
 
; sum = sum + element
  
ADD
 
BX, 2
  
; index next element
  
LOOP
 
ADDNOS
 
; loop until done
 
204231: Computer Organization and Architecture
 
15
 
Suppose that ALPHA is declared as
 
ALPHA
 
DW
 
0123H, 0456h, 0789h, 0ABCDh
 
in the segment addressed by DS.
Suppose also that
BX contains 2
 
Offset 0002 contains 1084h
SI contains 4
 
Offset 0004 contains 2BACh
DI contains 1
 
204231: Computer Organization and Architecture
 
16
 
Tell which of the following instructions are legal.
If legal, give the source offset address and the
result or number moved.
 
     
Source offset
 
Number moved
a.
MOV  AX, [ALPHA+BX]
 
ALPHA+2
 
0456h
b.
MOV  BX, [BX+2]
  
2+2 = 4
  
2BACh
c.
MOV  CX, ALPHA[SI]
 
ALPHA+4
 
0789h
d.
MOV  AX, –2[SI]
  
 –2+4 = 2
 
1084h
e.
MOV  BX, [ALPHA+3+DI]
 
ALPHA+4
 
0789h
f.
MOV  AX, [BX] 2
  
Illegal form of source operand
g.
ADD  BX, [ALPHA+AX]
 
Illegal source register
 
204231: Computer Organization and Architecture
 
17
 
Two-Dimensional Array B
 
204231: Computer Organization and Architecture
 
18
 
Row-Major Order
 
B
  
DW
 
10, 20, 30, 40
  
DW
 
50, 60, 70, 80
  
DW
 
90, 100, 110, 120
 
204231: Computer Organization and Architecture
 
19
 
Column-Major Order
 
B
  
DW
 
10, 50, 90
  
DW
 
20, 60, 100
  
DW
 
30, 70, 110
  
DW
 
40, 80, 120
 
204231: Computer Organization and Architecture
 
20
 
Based Indexed Addressing Mode
 
variable [base_register][index_register]
[base_register + index_register + variable + constant]
variable [base_register + index_register + constant]
constant [base_register + index_register + variable]
 
204231: Computer Organization and Architecture
 
21
 
Based Indexed Addressing Mode
 
MOV
 
AX, W[BX][SI]
MOV
 
AX, [W + BX + SI]
MOV
 
AX, W[BX + SI]
 
204231: Computer Organization and Architecture
 
22
 
An application: Average Test Scores
 
sum[j] = 0
i = 1
FOR  5  times  DO
 
sum[j] = sum[j] + score[i, j]
 
i = i + 1
END_FOR
 
204231: Computer Organization and Architecture
 
23
 
Reference
 
Ytha Yu and Charles Marut, 
Assembly
Language Programming and Organization of
the IBM PC
. New York: McGraw-Hill, 1992.
 
204231: Computer Organization and Architecture
 
24
Slide Note
Embed
Share

This content delves into the intricacies of addressing modes in assembly language, covering topics such as one-dimensional arrays, the DUP operator for defining arrays, and various modes like register, immediate, direct, and register-indirect modes. It explains how operands are specified in different modes and provides practical examples for better comprehension.

  • Assembly Language
  • Addressing Modes
  • Arrays
  • Computer Organization

Uploaded on Aug 05, 2024 | 2 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Assembly Language Part VIII Addressing Modes Department of Computer Science, Faculty of Science, Chiang Mai University

  2. Outline One-Dimensional Arrays Addressing Modes Two-Dimensional Arrays Based Indexed Addressing Mode 2 204231: Computer Organization and Architecture

  3. One-Dimensional Array A 3 204231: Computer Organization and Architecture

  4. The DUP Operator The DUP (duplicate) is used to define arrays whose elements share a common initial value. repeat_count DUP (value) GAMMADW 100 DUP (0) DELTA DB 212 DUP (?) LINE DB 5, 4, 3 DUP (2, 3 DUP (0), 1) LINE DB 5,4,2,0,0,0,1,2,0,0,0,1,2,0,0,0,1 4 204231: Computer Organization and Architecture

  5. One-Dimensional Array A W DW 10, 20, 30, 40, 50, 60 Offset address 0200h 0202h 0204h 0206h 0208h 020Ah Symbolic address Decimal address W W + 2h W + 4h W + 6h W + 8h W + Ah 10 20 30 40 50 60 5 204231: Computer Organization and Architecture

  6. Addressing Modes The way an operand is specified register mode: an operand is a register. immediate mode: an operand is a constant. direct mode: an operand is a variable. MOV AX, 0 ADD ALPHA, AX 6 204231: Computer Organization and Architecture

  7. Register Indirect Mode [register] The register is BX, SI, DI, or BP. For BX, SI, or DI, the operand s segment number is contained in DS. For BP, SS has the segment number. 7 204231: Computer Organization and Architecture

  8. Suppose that SI contains 0100h, and the word at 0100h contains 1234h. MOV The CPU 1. examines SI and obtains the offset address 100h, 2. uses the address DS:0100h to obtain the value 1234h, and 3. moves 1234h to AX. MOV AX, SI ; AX = 0100h AX, [SI] ; AX = 1234h 8 204231: Computer Organization and Architecture

  9. Suppose that BX contains 1000h SI contains 2000h DI contains 3000h Offset 1000h contains 1BACh Offset 2000h contains 20FEh Offset 3000h contains 031Dh where the above offsets are in the data segment addressed by DS. 9 204231: Computer Organization and Architecture

  10. Tell which of the following instructions are legal. If legal, give the source offset address and the result or number moved. Source offset a. MOV BX, [BX] 1000h b. MOV CX, [SI] 2000h c. MOV BX, [AX] illegal source register d. ADD [SI], [DI] illegal memory-memory addition e. INC [DI] 3000h Result 1BACh 20FEh 031Eh 10 204231: Computer Organization and Architecture

  11. Write some code to sum in AX the elements of the 10-element array W defined by W DW 10,20,30,40,50,60,70,80,90,100 11 204231: Computer Organization and Architecture

  12. The idea is to set a pointer to the base of the array, and let it move up the array, summing elements as it goes. XOR AX, AX LEA SI, W MOV CX, 10 ADDNOS: ADD AX, [SI] ADD SI, 2 ; AX holds sum ; SI points to array W ; CX has number of elements ; sum = sum + element ; move pointer to ; the next element ; loop until done LOOP ADDNOS 12 204231: Computer Organization and Architecture

  13. Based and Indexed Addressing Mode [register + displacement] [displacement + register] [register] + displacement displacement + [register] displacement[register] based: BX(base register) or BP (base pointer) indexed: SI (source index) orDI (destination index) 13 204231: Computer Organization and Architecture

  14. Based and Indexed Addressing Mode MOV MOV MOV MOV MOV AX, W[BX] AX, [W + BX] AX, [BX + W] AX, W + [BX] AX, [BX] + W 14 204231: Computer Organization and Architecture

  15. Rework the last example by using based mode. XOR AX, AX XOR BX, BX MOV CX, 10 ADDNOS: ADD AX, W[BX] ADD BX, 2 LOOP ADDNOS ; AX holds sum ; clear base register ; CX has number of elements ; sum = sum + element ; index next element ; loop until done 15 204231: Computer Organization and Architecture

  16. Suppose that ALPHA is declared as ALPHA DW 0123H, 0456h, 0789h, 0ABCDh in the segment addressed by DS. Suppose also that BX contains 2 SI contains 4 DI contains 1 Offset 0002 contains 1084h Offset 0004 contains 2BACh 16 204231: Computer Organization and Architecture

  17. Tell which of the following instructions are legal. If legal, give the source offset address and the result or number moved. Source offset Number moved ALPHA+2 0456h 2+2 = 4 2BACh ALPHA+4 0789h 2+4 = 2 1084h 0789h Illegal form of source operand Illegal source register a. b. c. d. e. f. g. MOV AX, [ALPHA+BX] MOV BX, [BX+2] MOV CX, ALPHA[SI] MOV AX, 2[SI] MOV BX, [ALPHA+3+DI] ALPHA+4 MOV AX, [BX] 2 ADD BX, [ALPHA+AX] 17 204231: Computer Organization and Architecture

  18. Two-Dimensional Array B 18 204231: Computer Organization and Architecture

  19. Row-Major Order B DW 10, 20, 30, 40 DW 50, 60, 70, 80 DW 90, 100, 110, 120 19 204231: Computer Organization and Architecture

  20. Column-Major Order B DW 10, 50, 90 DW 20, 60, 100 DW 30, 70, 110 DW 40, 80, 120 20 204231: Computer Organization and Architecture

  21. Based Indexed Addressing Mode variable [base_register][index_register] [base_register + index_register + variable + constant] variable [base_register + index_register + constant] constant [base_register + index_register + variable] 21 204231: Computer Organization and Architecture

  22. Based Indexed Addressing Mode MOV MOV MOV AX, W[BX][SI] AX, [W + BX + SI] AX, W[BX + SI] 22 204231: Computer Organization and Architecture

  23. An application: Average Test Scores sum[j] = 0 i = 1 FOR 5 times DO sum[j] = sum[j] + score[i, j] i = i + 1 END_FOR 23 204231: Computer Organization and Architecture

  24. Reference Ytha Yu and Charles Marut, Assembly Language Programming and Organization of the IBM PC. New York: McGraw-Hill, 1992. 24 204231: Computer Organization and Architecture

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#