組合語言之定址方式

2021-08-29 08:03:42 字數 1584 閱讀 5360

目錄

定址方式

立即數定址方式

暫存器定址方式

儲存器定址方式

轉移位址定址

參照自:

立即數(imm)可以是8位數值,也可以16位數值。

立即數定址方式常用來給暫存器賦值

mov ax, 1234h

運算元存放在cpu的內部暫存器中,

通用暫存器:ax,bx,cx,dx,

si,di,bp,sp

段暫存器:cs,ds,ss,es

mov bx, ax

mov ax, [2000h]

mov ax, es:[2000h]

暫存器間接定址:暫存器內容與有符號8位或16位位移之和。暫存器可以是bx,bp,si,di

ea = bx/bp/si/di+8/16位位移。

段位址bx/si/di預設是ds,bp暫存器預設是ss。

mov ax, [di+06h]

mov bx, [bp+06h]

基址變址定址:

mov ax, [bx+si]

mov ax, [bp+di]

mov ax, ds:[bp+di]

相對基址變址定址:

ea = bx/bp+si/di+8/16

bx基址暫存器預設ds bp基址對應ss。

mov ax, [bx][si]

;相當於mov ax, [bx+si]

mov ax, count[si]

;相當於mov ax, [si+count]

mov ax, wnsum[bx][si]

;相當於mov ax, wnsum[bx+si]

;相當於mov ax, [bx+si+wnsum]

1、段內直接定址。

cs不變,隻變ip。

jmp short quest    ;偏移8位 -128~127

jmp near ptr quest   ;偏移量 -32768~+32767

2、段內間接定址

設(ds)=2000h, (bx)=1256h, (si)=528fh

位移量=20a1h, (232f7h)=3280h, (264e5h)=2450h

jmp  bx         ;(ip)=1256h

jmp table[bx] ;(ip)=3280h

jmp [bx][si] ;(ip)=(264e5h)=2450h

3、段間直接定址:

不在同一段內,同時改變cs和ip。段間直接轉移,指令中直接給出了新的段位址cs和偏移位址ip。偏移位址(ip)在低位址,段位址在高位址。

指令格式:

jmp far ptr nextroutint

4、段間間接定址:

新的段位址(cs)和偏移位址(ip)在儲存器的

連續4個位元組單元中

(段位址在高位址中,偏移位址在低位址中)。儲存器的位址由指令中給出的各種定址方式(立即定址方式和暫存器定址方式除外)求得。其段位址隱含為資料段。

指令格式:

jmp dword ptr[inters+bx]

組合語言之定址方式

1 固定定址 inherent addressing 特定的單運算元指令,運算元隱含在操作碼中,在固定定址的指令中,運算元被隱含在指令中,不需要執行匯流排週期,執行速度快 例子 1.1 cbw命令,將al中的符號位擴充套件到ah中,形成16位的運算元。比如al中的符號位是1,則執行cbw命令後,ah...

組合語言之定址方式

如 mov ax,2a78 表示將乙個記憶體單元中的資料送入ax,這個記憶體單元的長度為2位元組 字單元 存放乙個字,偏移位址為2a78h,段位址 在ds中。如 mov al,10f3 表示將乙個記憶體單元中的資料送入al,這個記憶體單元的長度為1位元組 位元組單元 存放乙個位元組,偏移位址為10f...

組合語言之定址方式

1 固定定址 inherent addressing 特定的單運算元指令,運算元隱含在操作碼中,在固定定址的指令中,運算元被隱含在指令中,不需要執行匯流排週期,執行速度快 例子 1.1 cbw命令,將al中的符號位擴充套件到ah中,形成16位的運算元。比如al中的符號位是1,則執行cbw命令後,ah...