DS=215FH時,某操作數(shù)的物理地址是215FAH,當DS=18DEH時,該操作數(shù)的物理地址是多少
- 教育綜合
- 2023-10-26 12:59:58
老掉牙的匯編語言觀念問題(定址法,又稱尋址法)
立即尋址
立即尋址方式用來表示常數(shù),它主要用于給寄存器賦初值,注意:只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。
MOVAL,5
直接尋址
在IBM PC機中將操作數(shù)的偏移地址稱為有效地址EA。在直接尋址方式中有效地址EA就在指令中,它存放在代碼段中指令操作碼之后,但操作數(shù)一般存放在數(shù)據(jù)段中,所以必須先求出操作數(shù)的物理地址,然后再訪問存儲器才能取得操作數(shù).
如操作數(shù)在數(shù)據(jù)段中,則物理地址=16d×(DS)十EA。1BMPC機中允許數(shù)據(jù)存放在數(shù)據(jù)段以外的其他段中,此時應(yīng)在指令中指定段跨越前綴,在計算物理地址時應(yīng)使用指定的段寄存器。
movAX,[2000H]
(DS)=3000H,地址32000H中的值為3050H則,執(zhí)行結(jié)果為:(AX)=3050H
因為實際movAX中的內(nèi)容為16d*(Ds)+2000H=32000H
在匯編語言指令中,可以用符號地址代替數(shù)值地址,如:
MOVAX,VALUE
此時VAIUE為存放操作數(shù)單元的符號地址。如寫成
MOVAX,[VALUE]
也是可以的.兩者是等效的。如果VALUE在附加段中,則應(yīng)該指定段跨越前綴如下;
MOVAX,ES:VALUE
或MOVAX,ES:[VALUE]
直接尋址方式適用于處理單個變量,例如需要處理某個存放在存儲器里的變量,可用直接尋址方式,將該變量先取到一個寄存器中,然后在做處理。
IBM PC機規(guī)定:除在雙操作數(shù)中,除立即數(shù)外,必須有一個操作數(shù)使用寄存器方式。這也是一個常量常常送到寄存器去的原因。
寄存器間接址
操作數(shù)的有效地址在基址寄存器BX、BP或變垃寄存器SI、DI中,而操作數(shù)則在存儲器中,如下圖所示。
a.如果指令中指定的寄存器是BX、SI、DI,則操作數(shù)在數(shù)據(jù)段(DS)中,所以用DS寄存器的內(nèi)容作為段地址,即操作數(shù)的物理地址為:
物理地址=16d×(DS)十(BX)
或 物理地址;16 d×(DS)十(SI)
或 物理地址=16d×(DS)十(DI)
b.如指令中指定BP寄存器,則操作數(shù)在堆棧段(SS)中,段地址在SS中,所以操作數(shù)的物理地址為:
物理地址=16d×(SS)十(SP)
MOVAX,[BX]
如果 (DS)=2000H , (BX)=1000H 則
物理地址=16d×(DS)十(BX) = 20000H+1000H = 21000H
21000H地址里的內(nèi)容為 50A0H則 執(zhí)行結(jié)果為:(AX)=50A0H
c.指令中也可指定段跨越前綴來取得其他段中的數(shù)據(jù)。如;
MOVAX,ES:[BX]
這種尋址方式可以用于表格處理,執(zhí)行完一條指令后,只需要修改寄存器內(nèi)容就可取出表格中的下一項。
寄存器相對尋址方式
操作數(shù)的有效地址是一個基址或變址寄存器的內(nèi)容和指令中指定的8位或16位位移量之和。即
|(BX)
EA=|(BP)+8位或者16位的位移量
|(SI)
|(DI)
同寄存器尋址一樣 BX BP DI 若沒有段跨越前綴
物理地址為=16d×(DS) +位移量 + *SP
物理地址為=16d×(SS)十(SP) + 位移量 + *
舉個例子:
MOVAX,COUNT[SI](也可表示為MOvAX,[COUKT十SI]
其中,COUNT 為16位位移量的符號地址。
如果(DS)=3000H,(SI)=2000H COUNT=3000H
則物理地址 = 30000十2000十3000 =35000H
基址變址尋址方式
操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容之和。兩個寄存器均由指令指定。如果基址寄存器為BX,段寄存器使用DS;如基址寄存器為BP時,段寄存器則用SS。因此,物理地址為:
= 16D * DS + (BX) + SI(或者DI)
= 16D * SS + (BP) + SI(或者DI)
相對基址變址尋址方式
操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容和8位或16位位移量之
和。同樣,當基址寄存器為BX時,使用DS段寄存器;而當基址寄存器為BP時,則使用SS為段寄存器。因此物理地址為:
= 16d * DS + BX + SI + 位移量(8位或16位)
= 16d * ss + BP + SI + 位移量(8位或16位)
MOVAX,MASK[BX][SI]
(也可以寫成M0VAX,MASK[DX十SI]
或MoVAX.[MASK十BX十SI])
如 (DS)=3000H,(BX)=2000H、(SI)=l000H,MASK=0250H,
則 物理地址=16d×(DS)十(BX)十(SI)十MASK
=30000十2000十1000十0250
=33250H
閱讀下列指令,指出下列指令中的源操作數(shù)的尋址方式,并計算該操作數(shù) 的物理地址(如果需要)
(1)立即尋址 (2)變址尋址 (DS) * 10H + DATA + DI = 2105AH (3)基址加變址尋址 (DS) * 10H + (DI) + (BX) = 2110AH (4)寄存器尋址寄存器尋址和寄存器間接尋址的區(qū)別
一、主體不同
1、寄存器尋址:是指操作數(shù)在寄存器中,由指令操作碼中的rrr三位的值和PSW中RS1及RS0的狀態(tài),選中某個工作寄存器區(qū)的某個寄存器,然后進行相應(yīng)的指令操作。
2、寄存器間接尋址:將指定的寄存器內(nèi)容為地址,由該地址所指定的單元內(nèi)容作為操作數(shù)。
二、功能不同
1、寄存器尋址:指令所要的操作數(shù)已存儲在某寄存器中,或把目標操作數(shù)存入寄存器。
2、寄存器間接尋址:寄存器內(nèi)存放的是操作數(shù)的地址,而不是操作數(shù)本身,即操作數(shù)是通過寄存器間接得到的。
三、特點不同
1、寄存器尋址:在指令執(zhí)行過程中,會減少讀/寫存儲器單元的次數(shù),所以,使用寄存器尋址方式的指令具有較快的執(zhí)行速度。
2、寄存器間接尋址:需要以寄存器符號的形式來表示,且在寄存器名稱前面加上間接尋址符號“@”。例如指令MOV A,@R0就使用了寄存器間接尋址方式。
參考資料來源:百度百科-寄存器尋址
參考資料來源:百度百科-寄存器間接尋址
匯編語言mov 【ax+2】,bx的目的操作數(shù)地址
沒有見過這種寫法,
看了一下5種尋址方式也沒有見過這種寫法,
用編譯器變了一下,也是病句
所以樓主你的mov【ax+2】,bx是錯的哦
下面是尋址方式的簡介,樓主可以參考一下哦
PS:若有不明白的地方,可以追問
尋址方式的簡介
段地址(SA)和偏移地址(EA)
1.直接尋址
直接尋址方式是指操作數(shù)的偏移地址在指令中直接給出,例如
MOVAX,[1234H]
EA=1234H,SA=DS
2.寄存器間接尋址
寄存器間接尋址是指操作數(shù)的偏移地址在BX,BP,SI,DI四個寄存 器之一中
(1)當以BX,SI或DI寄存器進行間接尋址時,操作數(shù)的物理地址有DS中的段地址與BX,SI或DI中的偏移地址構(gòu)成
(2)當以BP寄存器進行間接尋址時,操作數(shù)的物理i地址有SS中的段地址與BP中的偏移地址構(gòu)成
MOVAX,[BX,SI或DI]
EA=BX,SI或DI,SA=DS
MOVAX,[BP]EA=BP,SA=SS
3.寄存器相對尋址
寄存器相對尋址是指操作數(shù)的偏移地址是BX,BP,SI,DI之一的值和一個8位或16位偏移地址之和
(1)當以BX,SI或DI寄存器進行間接尋址時,操作數(shù)的物理地址有DS中的段地址與BX,SI或DI中的偏移地址構(gòu)成
(2)當以BP寄存器進行間接尋址時,操作數(shù)的物理i地址有SS中的段地址與BP中的偏移地址構(gòu)成
MOVAX,[BP+100H]EA=BP+100H,SA=SS
MOVAX,[BX,SI或DI+100H]EA=BX,SI或DI+100H,SA=DS
[BX+100H]等價于200H[SI]
4.基址變址尋址
基址變址尋址是指操作數(shù)的偏移地址是一個基址寄存器BX,BP的值和一個變址寄存器SI,DI的值之和
(1)當以BX作為基址寄存器時,操作數(shù)物理地址由DS中的段地址與SI或DI中的偏移地址構(gòu)成
(2)當以BP作為基址寄存器是,操作數(shù)物理地址由SS中的段地址與SI或DI中的偏移地址構(gòu)成
MOVAX,[BX+DI或SI]EA=BX+SI或DI,SA=DS
MOVAX,[BP+DI或SI]EA=BP+SI或DI,SA=SS
[BX+SI]等價于[BX]+[SI]
5.相對基址變址尋址
相對基址變址尋址是指操作數(shù)的偏移地址是一個基址寄存器BX,BP的值加上一個變址基礎(chǔ)器SI,DI的值,再加上指令中的一個8位,16位偏移量之和
(1)當以BX作為基址寄存器時,操作數(shù)物理地址由DS中的段地址與SI或DI中的偏移地址構(gòu)成
(2)當以BP作為基址寄存器是,操作數(shù)物理地址由SS中的段地址與SI或DI中的偏移地址構(gòu)成
MOVAX,[BX+100H+DI或SI] EA=BX+DI或SI+100H,SA=DS
MOVAX,[BP+100H+DI或SI] EA=BP+DI或SI+100H,SA=SS
[BX+SI+100H]等價于100H[BX+SI]等價于[BX]+[SI]+100H
設(shè)DS=8225H,DI=3942H,指令I(lǐng)NC BYTE PTR[DI]操作數(shù)的物理地址是( ) A.86192H B.85B92H C.41645H D.41B45H
設(shè)DS=8225H,DI=3942H,指令I(lǐng)NC BYTE PTR[DI] 操作數(shù)的物理地址是=(DS)×16+有效地址=82250+3942H=85B92H INC BYTE PTR[DI]這個指令的含義:將該物理地址單元中的操作數(shù)加1,結(jié)果還保存在該單元中。 答案: 為B.85B92H下一篇
返回列表