1. 程式人生 > >組合語言第七、八章總結

組合語言第七、八章總結

  • and和or指令

1. and指令——邏輯與指令,按位進行與運算,通過該指令可將操作物件的相應位設為0,其他位不變

2. or指令——邏輯或指令,按位進行或運算,通過該指令可將操作物件的相應位設為1,其他位不變

  • 以字元形式給出的資料

1. 以“...”的方式指明資料是以字元的形式給出的,編譯器把它們轉化為相應的ASCII碼

  • 大小寫轉換的問題

1. 大寫字母+20H=小寫字母;小寫字母-20H=大寫字母

2. and al,11011111B  可將小寫字母變為大寫字母;or al,00100000B 可將大寫字母變為小寫字母

  • [bx+idata]

1. 表示一個記憶體單元,它的偏移地址為(bx)+idata(bx中的數值加上idata)

  • si和di

1. 是和bx功能相近的暫存器,但是si和di不能夠分成兩個8位暫存器來使用

  • [bx+si]和[bx+di]

1. [bx+si]表示一個記憶體單元,它的偏移地址為(bx)+(si)(即bx中的數值加上si中的數值)

  • [bx+si+idata]和[bx+di+idata]

1. [bx+si+idata]表示一個記憶體單元,它的偏移地址為(bx)+(si)+idata(即bx中的數值加上si中的數值再加上idata)

一般來說,在需要暫存資料的時候,我們都應該使用棧

  • bx、si、di和bp

1. 只有這四個暫存器可以用在[...]中進行記憶體單元的定址

2. 可以單獨出現,或只能以四種組合出現

(1)單獨:mov ax,[bx]        mov ax,[si]        mov ax,[di]        mov ax,[bp]

(2)加上si或di:mov ax,[bx+si]    mov ax,[bx+di]    mov ax,[bp+si]    mov ax,[bp+di]

(3)再加上idata:mov ax,[bx+si+idata]    mov ax,[bx+di+idata]    mov ax,[bp+si+idata]    mov ax,[bp+di+idata]

  • 定址方式的總結
定址方式 名稱 含義
[idata] 直接定址

EA=idata,SA=(ds)

[bx]、[si]、[di]、[bp] 暫存器間接定址 EA=(暫存器),SA=(ds)
[bx+idata]、[si+idata]、[di+idata]、[bp+idata] 暫存器相對定址 EA=(暫存器)+idata,SA=(ds)
[bx+si]、[bx+di]、[bp+si]、[bp+di] 基址變址定址 EA=(bx或bp)+(si或di),SA=(ds)

[bx+si+idata]、[bx+di+idata]、

[bp+si+idata]、[bp+di+idata]

相對基址變址定址 EA=(bx或bp)+(si或di)+idata,SA=(ds)
  • 指令處理資料的長度

1. 8086中可以處理byte和word兩種長度的資料,在機器指令中要指明是字操作還是位元組操作

(1)通過暫存器指明,例如ax或者al

(2)用操作符X ptr指明記憶體單元的長度(X可以為word或byte)

(3)在push和pop指令當中則是默認了為字操作

  • div指令

1. div為除法指令

(1)當被除數是16位,除數為8位時:被除數預設放在ax當中,最後的商放在al中,餘數放在ah中

(2)當被除數是32位,除數為16位時:被除數的高16位放在dx中,低16位放在ax中,最後的商放在ax中,餘數放在dx中

  • 偽指令dd

1. 與db、dw類似,dd是用來定義dword(double word,雙字)型資料的

  • dup

1. dup是一個操作符,由彙編器識別處理的符號,和db、dw、dd等資料定義偽指令配合使用的,用來進行資料的重複

2.例:db 3 dup (0) 定義了三個位元組,值都為0,相當於db 0,0,0;db 3 dup (0,1,2) 定義了9個位元組,相當於 db 0,1,2,0,1,2,0,1,2

3.格式:

(1)db 重複的次數 dup (重複的位元組型資料)

(2)dw 重複的次數 dup (重複的字型資料)

(3)dd 重複的次數 dup (重複的雙字型資料)