实模式与保护模式详解三:寻址方式
尋找操作數物理地址的方式叫尋址方式
操作數的存放點
操作數在指令中
指令的操作數部分就是操作數本身
也叫立即數
操作數存放在CPU寄存器中
指令的操作數部分是寄存器的編碼
也叫寄存器操作數
操作數存放在內存中
指令的操作數部分包含操作數所在的內存地址
也叫儲存器操作數
尋址方式
e.g.
MOV AL, 10H
特點:操作數直接放在指令中
INC SI
特點:指令中需給出寄存器名,寄存器中的內容即為操作數
直接尋址
例子
MOV AL,[2000H] ; AL ← PA=DSx16+2000
特點: p指令中直接給出有效地址EA:8位或16位位移量。 PA = (段寄存器)X 10H +指令中的EA 。 默認方式下:段寄存器是數據段DS。段跨越:指令增加段寄存器名前綴:CS,ES,SS等
寄存器間接尋址方式
例子
MOV AX,[SI] ;AX ← DSx16 + [SI],[SI+1]
MOV BH,[BP] ;BH ← SSx16 + BP
MOV CX,ES:[BX] ;將ES段[BX][BX+1]內容送CL,CH
特點: 操作數的有效地址EA在寄存器中。 對16位尋址,EA只能放在DI、SI、BX、 BP中 ,若EA在DI、SI、BX中,默認段為數據段DS ,若EA在BP中,默認段為堆棧段SS ,支持段跨越。
寄存器相對尋址方式
例子
MOV AX, [BX+10H] ; EA=(BX)+10H
特點 :給定基址/變址寄存器和相對偏移量,兩者之和為EA。 寄存器BX、SI、DI默認是數據段DS,寄存器BP默認堆棧段SS。 支持段跨越。
基址變址尋址方式
例子
MOV AX, [BX+SI] ; EA=(BX)+(SI) ;DS段
特點:有效地址EA是基址寄存器與變址寄存器的和。 默認段由基址寄存器決定。 支持段跨越。
相對基址變址尋址方式
特點 :有效地址EA是基址寄存器+變址寄存器+偏移量三者之和。 基址寄存器可取BX或BP,變址寄存器可取SI或DI。 段寄存器由基址寄存器決定 p基址寄存器是BX,則默認段為DS; p基址寄存器是BP,則默認段為SS。
尋址時寄存器的使用約束
4. 一條指令的原操作數與目的操作數不能同時用存儲器方式表示
如:
MOV [EAX + 4], DS:[100]
MOV [SI], [DI]
5. 雙操作數有一操作數為立即數方式時,立即方式只能用于源操作數
6. 兩個操作數的類型都明確時,源操作數不能比目標操作數長度要相同。不含變量的存儲器方式類型是不明確的,立即數時沒有類型的。當兩個操作數類型都不明確時,需要用屬性定義算符PTR指明其中一個操作數類型
總結
以上是生活随笔為你收集整理的实模式与保护模式详解三:寻址方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实模式与保护模式详解二:地址映射
- 下一篇: ASCII 编码对照表