28.下列四種關於指令的定址模式(addressing mode)中, 哪一種模式其運算元(operand)資料來自暫存器?
(A)立即定址(immediate addressing)
(B)基底定址(base addressing)
(C)程式計數器相對定址(PC-relative addressing)
(D) 暫存器定址(register addressing)

答案:登入後查看
統計: A(3), B(7), C(25), D(69), E(0) #619980

詳解 (共 1 筆)

#1311507
何謂定址法,就是指定記憶體位址的方法,比如說,要將AX的值儲存到記憶體之中,則必需指定所要存放的記憶體位址才行,在編寫組合語言程式時,我們很少直接寫入「位址」,通常會以「記憶體變數」來當作是記憶體的某個位址值,而基本上我可以知道的是每個一記憶體變數位址間的關係是自己定義
 
首先資料的定址可分為「暫存器定址法」、「立即定址法」及「記憶位址定址法」等三種。
 
而其中「記憶位址定址法」又可區分為「直接」、「間接」等兩種定址法。
 
而間接定址法,又可分為「索引」、「基底」與「基底索引」等三種定址法。
我們將在以下介紹各個定址法的使用方法。
 
1.暫存器定址法:運算元為暫存器者
 
 mov ax,bx
 
 mov al,bh
 
2.立即定址法:運算元為立即值
 
 mov ax,041eh
 
 mov ah,4ch
 
3.直接定址法:直接指定記憶體位址
 
 mov ax,[play0]
 
 mov [play1],si
 
註:上述的 play0 及 play1 只是個記憶體變數名稱,其組譯之後,會變成一個立即值,它會自動指向你所指定的記憶體位址,詳細說明請看『組合語言基礎」中的「設計第一個可執行的組合語言程式」。
 
4.索引定址法:使用索引暫存器來實施間接定址的方式
 
 mov ax,[si]
 
 mov [di],cx
 
 mov si,[di+8]
 
5.基底定址法:使用基底暫存器來實施間接定址的方式
 
 mov [bx],ax
 
 mov dx,[bp]
 
 mov [bx-10],si
 
6.基底索引定址法:基底暫存器與索引暫存器一起使用的間接定址方式
 
 mov ax,[bx][si]
 
 mov bx,[bx][di]
 
 mov cx,[bp][si]
 
 mov [bp][di][12],cx
 
註:不可以兩個基底一起使用,或者兩個索引一起使用,如下
 
  mov ax,[si][di]         錯誤試範
 
  mov [bp][bx],cx      錯誤試範
 
附註:以上 4 ~ 6 項皆為間接定址法,間接定址法時可外加偏值如下:
 
1.   mov ax,[si][12]
 
等於 mov ax,[si+12]
 
2.   mov [bx][si][8]
 
等於 mov [bx+si+8]
14
1