- 1
- 0
- 约3.81千字
- 约 6页
- 2017-03-04 发布于天津
- 举报
第五章定址法
第五章 定址法
所有高階語言都有變數與陣列,可以很方便的存取資料,組合語言為了強調執行效率,必須安排所有資料於一維的連續記憶體、暫存器、或立即值,然後再使用適當的定址法存取所需的資料。本章即要介紹這些定址法。其次,介紹定址法之前,必須先說明組合語言的指令格式,組合語言的指令格式如下:
指令 目的運算元,來源運算元
隱含定址法
沒有目的與來源運算元的稱為隱含定址法。例如,
CLC
AAA
以上指令雖然沒有指定目的與來源運算元,但其運算目的卻都以隱含指定,此稱為隱含定址法。
立即定址法
運算元是一常數(或稱立即值),稱為立即定址法(immediate addressing )。例如,
MOV AL,23
INT 20
中的23與20均為常數。
暫存器定址法
運算元是暫存器,稱為暫存器定址法(register addressing )。例如,
MOV AX,BX
INC BX ;BX=BX+1
PUSH AX
POP AX
【自我練習】
1、寫出以下程式執行結果。
MOV AH,2
MOV AL,AB AX=_______
MOV BX,AX BX=________
INC BX BX=________
直接定址法
運算元是一記憶體的位址,稱為直接定址法(direct addressing)。例如,
-d300
-00 01 02 03 ;位址300填入00,301填入01…
MOV AL,[301]
AL= 01
MOV DL,11
MOV [500],DL
MOV DL,22
MOV[501],DL
-d500
-11 22
其次,於Masm可以使用標記代替記憶體位址,所以
aa db 34h ;h代表十六進位
MOVE AL,aa
則AL=34 。
【自我練習】
2、寫出以下程式執行結果。
-d300
-00 01 02 03 04 05
MOV BX,300 BX=______
MOV BL,[300] BL=______
MOV BX,[300] BH=_______,BL=______,BX=_______
MOV AX,1234
MOV [300],AX 位址300的內容=______,位址301的內容=______。
3、請使用直接定址法,將位址300的資料複製至400。
暫存器間接定址法
暫存器間接定址法(register indirect addressing )是將暫存器的值當作記憶體之有效位址(EA),可用的暫存器包括了BX、DI、SI及BP等四個,其中BX、DI、SI預設節區暫存器是DS,而暫存器BP的節區暫存器固定為SS。例如,
-d400
-00 01 02 03
MOV BX,400
MOV AL,[BX]
AL= 00
但是,
MOV AX,[CX]
卻是錯誤的,因為AX、CX、DX都不能當暫存器間接定址法的來源暫存器。
【自我練習】
4、寫出以下程式執行結果。
-d300
-00 01 02 03 04 05
MOV BX,300
MOV AX,BX AX=______
MOV AX,[BX] AX=______
基底相對定址法
基底相對定址法(base relative addressing),又稱暫存器相對定址法 (register relative addressing)。以BX或BP為基底,再加上一個偏移量,當作位址,並取此位址的資料。例如,
-d400
-00 01 02 03
MOV BX,400
MOV AL,[BX][02]
AL= 02
-d300
-00 01 02 03
MOV BP,300
MOV AL,30
MOV [BP][01],AL
-d300
00、30、02、03 (本例假設SS與DS的值相同)
其次,以BX為基底時,配合DS,主要是存取資料區段;以BP為基底時,應配合SS,主要是存取堆疊區段。
【自我練習】
5、寫出以下程式執行結果。
-d300
-00 01 02 03 04 05
MOV BX,300
MOV AX,[BX+2] AX=______
MOV AX,[BX][2] AX=______
MOV AX,[BX]+2 AX=_______
6、請使用基底相對定址法,將位址301的資料複製至401。
直接索引定址法
以一個固定值,加上SI或DI為位址,並存取其資料,稱為直接索
原创力文档

文档评论(0)