回覆列表
  • 1 # 使用者6484034300502

    七種定址方式“   

    1、立即定址方式:   運算元就包含在指令中。作為指令的一部分,跟在操作碼後存放在程式碼段。   這種運算元成為立即數。立即數可以是8位的,也可以是16位的。   例如:   指令: MOV AX,1234H   則: AX = 1234H   

    2、暫存器定址方式:   運算元在CPU內部的暫存器中,指令指定暫存器號。   對於16位運算元,暫存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。   對於8位運算元,暫存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。   這種定址方式由於運算元就在暫存器中,不需要訪問儲存器來取得運算元   因而可以取得較高的運算數度。   

    3、直接定址方式:   運算元在暫存器中,指令直接包含有運算元的有效地址(偏移地址)   注:運算元一般存放在資料段   所以運算元的地址由DS加上指令中直接給出的16位偏移得到。如果採用   段超越字首,則運算元也可含在資料段外的其他段中。   例如:   MOV AX,[8054]   如(DS) = 2000H,   則執行結果為(AX) = 3050H   (物理地址=20000+8054=28054H)   28054H裡的內容為3050H   在組合語言指令中,可以用符號地址代替數值地址   如:MOV AX,VALUE   此時VALUE為存放運算元單元的符號地址。   如寫成:MOV AX,[VALUE]也是可以的,兩者是等效的。   如VALUE在附加段中,則應指定段超越字首如下:   MOV AX,ES:VALUE 或 MOV AX,ES:[VALUE]   4、暫存器間接定址方式:   運算元在暫存器中,運算元有效地址在SI、DI、BX、BP   這四個暫存器之一中。在一般情況下,如果有效地址在   SI、DI和BX中,則以DS段暫存器中的內容為段值。如果   有效地址在BP中,則以SS段暫存器中的內容為段值   例如:   MOV AX,[SI]   如果(DS) = 5000H (SI) = 1234H   則物理地址 = 50000 + 1234 = 51234H   51234H地址中的內容為:6789H   執行該指令後,(AX) = 6789H   5、暫存器相對定址方式:   運算元在儲存器中,運算元的有效地址是一個基址暫存器(BX、BP)   或變址暫存器(SI、DI)的內容加上指令中給定的8位或16位位移量之和   BX 8位 位移量   EA(有效地址) = BP +   SI 16位 位移量   DI   在一般情況下,如果SI、DI、或BX中的內容作為有效地址的一部分,那麼   引用的段暫存器是DS;如果BP中的內容作為有效地址的一部分,那麼引用的   段暫存器是SS。   物理地址 = 16d × (DS) + (BX) + 8   或(SI)或16位位移量   或(DI)   物理地址 = 16d × (SS) + (BP) + 8位位移量   或16位位移量   在指令中給定的8位或16位位移量採用補碼形式表示。在計算有效地址時,如   位移量是8位,則被帶符號擴充套件成16位。   例如:   MOV AX,[DI+1223H]   假設,(DS) = 5000H,(DI) = 3678H   則物理地址 = 50000 + 3678 + 1233 = 5489BH   5489BH地址中的內容:55AAH   執行該指令後AX = 55AAH   下面指令中,源運算元採用暫存器相對定址,引用的段暫存器是SS: MOV BX,[BP-4]   下面指令中,目的運算元採用暫存器相對定址,引用的段暫存器是ES: MOV ES:[BX+5],AL   指令:MOV AX,[SI+3]與MOV AX,3[SI]是等價的   6、基址加變址定址方式:   運算元在暫存器中,運算元的有效地址由:   基址暫存器之一的內容與變址暫存器之一的內容相加   BX SI   即: EA = +   BP DI   在一般情況下,如果BP之內容作為有效地址的一部分,則以SS之內容為段值,否則已DS   為段值。   例如:   MOV AX,[BX][DI]   如:(DS)=2100H,   (BX)=0158H,   (DI)=10A5H   則EA=0158 + 10A5 = 11FD   物理地址=21000 + 11FD = 221FDH   221FDH地址中的內容:1234H   執行該指令後AX = 1234H   下面指令中,目的運算元採用基址加變址定址,   引用的段暫存器是DS: MOV DS:[BP+SI],AL   下面指令中,源運算元採用基址加變址定址,   引用的段暫存器ES: MOV AX,ES:[BX+SI]   這種定址方式使用與陣列或表格處理。用基址暫存器存放陣列首地址,而用變地暫存器   來定位陣列中的各元素,或反之。由於兩個暫存器都可改變,所以能更加靈活地訪問數   組或表格中的元素。   下面的兩種表示方法是等價的:   MOV AX,[BX+DI]   MOV AX,[DI][BX]   7、相對基址加變址定址方式:   運算元在儲存器中,運算元的有效地址由於基址暫存器之一的內容與變址暫存器之一的   內容及指令中給定的8位或16位位移量相加得到。   BX SI 8位   即: EA = + + 位移量   BP DI 16位   在一般情況下,如果BP中的內容作為有效地址的一部分,則以SS段暫存器中的內容為段   值,否則以DS段暫存器中的內容為段值。   在指令中給定的8位或16位位移量採用補碼形式表示。   在計算有效地址時,如果位移量是8位,那麼被帶符號擴充套件成16位。   當所得的有效地址操作FFFFH時,就取其64K的模   例如:   MOV AX,[BX+DI-2]   假設,(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H   物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H   執行該指令後 (AX) = 7654H   相對基址加變址這種定址方式的表示方法多種多樣,以下四種方法均是等價的:   MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]   MOV AX 1234H[BX+DI], MOV AX,1234H[DI][BX]

  • 中秋節和大豐收的關聯?
  • 蘋果6關機充電怎麼看充滿沒有?