实模式与保护模式详解三:寻址方式
尋找操作數(shù)物理地址的方式叫尋址方式
操作數(shù)的存放點(diǎn)
操作數(shù)在指令中
指令的操作數(shù)部分就是操作數(shù)本身
也叫立即數(shù)
操作數(shù)存放在CPU寄存器中
指令的操作數(shù)部分是寄存器的編碼
也叫寄存器操作數(shù)
操作數(shù)存放在內(nèi)存中
指令的操作數(shù)部分包含操作數(shù)所在的內(nèi)存地址
也叫儲(chǔ)存器操作數(shù)
尋址方式
e.g.
MOV AL, 10H
特點(diǎn):操作數(shù)直接放在指令中
INC SI
特點(diǎn):指令中需給出寄存器名,寄存器中的內(nèi)容即為操作數(shù)
直接尋址
例子
MOV AL,[2000H] ; AL ← PA=DSx16+2000
特點(diǎn): p指令中直接給出有效地址EA:8位或16位位移量。 PA = (段寄存器)X 10H +指令中的EA 。 默認(rèn)方式下:段寄存器是數(shù)據(jù)段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]內(nèi)容送CL,CH
特點(diǎn): 操作數(shù)的有效地址EA在寄存器中。 對(duì)16位尋址,EA只能放在DI、SI、BX、 BP中 ,若EA在DI、SI、BX中,默認(rèn)段為數(shù)據(jù)段DS ,若EA在BP中,默認(rèn)段為堆棧段SS ,支持段跨越。
寄存器相對(duì)尋址方式
例子
MOV AX, [BX+10H] ; EA=(BX)+10H
特點(diǎn) :給定基址/變址寄存器和相對(duì)偏移量,兩者之和為EA。 寄存器BX、SI、DI默認(rèn)是數(shù)據(jù)段DS,寄存器BP默認(rèn)堆棧段SS。 支持段跨越。
基址變址尋址方式
例子
MOV AX, [BX+SI] ; EA=(BX)+(SI) ;DS段
特點(diǎn):有效地址EA是基址寄存器與變址寄存器的和。 默認(rèn)段由基址寄存器決定。 支持段跨越。
相對(duì)基址變址尋址方式
特點(diǎn) :有效地址EA是基址寄存器+變址寄存器+偏移量三者之和。 基址寄存器可取BX或BP,變址寄存器可取SI或DI。 段寄存器由基址寄存器決定 p基址寄存器是BX,則默認(rèn)段為DS; p基址寄存器是BP,則默認(rèn)段為SS。
尋址時(shí)寄存器的使用約束
4. 一條指令的原操作數(shù)與目的操作數(shù)不能同時(shí)用存儲(chǔ)器方式表示
如:
MOV [EAX + 4], DS:[100]
MOV [SI], [DI]
5. 雙操作數(shù)有一操作數(shù)為立即數(shù)方式時(shí),立即方式只能用于源操作數(shù)
6. 兩個(gè)操作數(shù)的類型都明確時(shí),源操作數(shù)不能比目標(biāo)操作數(shù)長(zhǎng)度要相同。不含變量的存儲(chǔ)器方式類型是不明確的,立即數(shù)時(shí)沒(méi)有類型的。當(dāng)兩個(gè)操作數(shù)類型都不明確時(shí),需要用屬性定義算符PTR指明其中一個(gè)操作數(shù)類型
總結(jié)
以上是生活随笔為你收集整理的实模式与保护模式详解三:寻址方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 实模式与保护模式详解二:地址映射
- 下一篇: OpenCV-Python 彩色图像均衡