免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
七種尋址方式(立即尋址、寄存器尋址)

七種尋址方式(立即尋址、寄存器尋址)



一、立即尋址方式


操作數(shù)作為指令的一部分而直接寫(xiě)在指令中,這種操作數(shù)稱(chēng)為立即數(shù),這種尋址方式也就稱(chēng)為立即數(shù)尋址方式。



立即數(shù)可以是8位、16位或32位,該數(shù)值緊跟在操作碼之后。如果立即數(shù)為16位或32位,那么,它將按“高高低低”的原則進(jìn)行存儲(chǔ)。例如:



MOV AH, 80H   ADD AX, 1234H   MOV ECX, 123456H

MOV B1, 12H   MOV W1, 3456H   ADD D1, 32123456H



其中:B1、W1和D1分別是字節(jié)、字和雙字單元。



以上指令中的第二操作數(shù)都是立即數(shù),在匯編語(yǔ)言中,規(guī)定:立即數(shù)不能作為指令中的第二操作數(shù)。該規(guī)定與高級(jí)語(yǔ)言中“賦值語(yǔ)句的左邊不能是常量”的規(guī)定相一致。



立即數(shù)尋址方式通常用于對(duì)通用寄存器或內(nèi)存單元賦初值。圖是指令“MOV AX, 4576H”存儲(chǔ)形式和執(zhí)行示意圖。



二、寄存器尋址方式


  指令所要的操作數(shù)已存儲(chǔ)在某寄存器中,或把目標(biāo)操作數(shù)存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助憶符)的尋址方式稱(chēng)為寄存器尋址方式。

指令中可以引用的寄存器及其符號(hào)名稱(chēng)如下:

  8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;

  16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;

  32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。

寄存器尋址方式是一種簡(jiǎn)單快捷的尋址方式,源和目的操作數(shù)都可以是寄存器。




1、源操作數(shù)是寄存器尋址方式

  如:ADD VARD, EAX  ADD VARW, AX   MOV VARB, BH等。

  其中:VARD、VARW和VARB是雙字,字和字節(jié)類(lèi)型的內(nèi)存變量。在第4章將會(huì)學(xué)到如何定義它們。




2、目的操作數(shù)是寄存器尋址方式

  如:ADD BH, 78h    ADD AX, 1234h   MOV EBX, 12345678H等。




3、源和目的操作數(shù)都是寄存器尋址方式

  如:MOV EAX, EBX   MOV AX, BX     MOV DH, BL等。




  由于指令所需的操作數(shù)已存儲(chǔ)在寄存器中,或操作的結(jié)果存入寄存器,這樣,在指令執(zhí)行過(guò)程中,會(huì)減少讀/寫(xiě)存儲(chǔ)器單元的次數(shù),所以,使用寄存器尋址方式的指令具有較快的執(zhí)行速度。通常情況下,我們提倡在編寫(xiě)匯編語(yǔ)言程序時(shí),應(yīng)盡可能地使用寄存器尋址方式,但也不要把它絕對(duì)化。




七種尋址方式(直接尋址方式)



指令所要的操作數(shù)存放在內(nèi)存中,在指令中直接給出該操作數(shù)的有效地址,這種尋址方式為直接尋址方式。


在通常情況下,操作數(shù)存放在數(shù)據(jù)段中,所以,其物理地址將由數(shù)據(jù)段寄存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那么,操作數(shù)可存放在其它段。


例:假設(shè)有指令:MOV BX, [1234H],在執(zhí)行時(shí),(DS)=2000H,內(nèi)存單元21234H的值為5213H。問(wèn)該指令執(zhí)行后,BX的值是什么?


解:根據(jù)直接尋址方式的尋址規(guī)則,把該指令的具體執(zhí)行過(guò)程用下圖來(lái)表示。


從圖中,可看出執(zhí)行該指令要分三部分:

 

由于1234H是一個(gè)直接地址,它緊跟在指令的操作碼之后,隨取指令而被讀出;


訪(fǎng)問(wèn)數(shù)據(jù)段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存儲(chǔ)單元的物理地址:21234H;


取單元21234H的值5213H,并按“高高低低”的原則存入寄存器BX中。


所以,在執(zhí)行該指令后,BX的值就為5213H。

 


由于數(shù)據(jù)段的段寄存器默認(rèn)為DS,如果要指定訪(fǎng)問(wèn)其它段內(nèi)的數(shù)據(jù),可在指令中用段前綴的方式顯式地書(shū)寫(xiě)出來(lái)。


下面指令的目標(biāo)操作數(shù)就是帶有段前綴的直接尋址方式。


MOV ES:[1000H], AX


直接尋址方式常用于處理內(nèi)存單元的數(shù)據(jù),其操作數(shù)是內(nèi)存變量的值,該尋址方式可在64K字節(jié)的段內(nèi)進(jìn)行尋址。


注意:立即尋址方式和直接尋址方式的書(shū)寫(xiě)格式的不同,直接尋址的地址要寫(xiě)在括號(hào)“[”,“]”內(nèi)。在程序中,直接地址通常用內(nèi)存變量名來(lái)表示,如:MOV BX, VARW,其中,VARW是內(nèi)存字變量。



試比較下列指令中源操作數(shù)的尋址方式(VARW是內(nèi)存字變量):

  MOV AX, 1234H MOV AX, [1234H] ;前者是立即尋址,后者是直接尋址 

  MOV AX, VARW MOV AX, [VARW] ;兩者是等效的,均為直接尋址




七種尋址方式(寄存器間接尋址方式)



操作數(shù)在存儲(chǔ)器中,操作數(shù)的有效地址用SI、DI、BX和BP等四個(gè)寄存器之一來(lái)指定,稱(chēng)這種尋址方式為寄存器間接尋址方式。該尋址方式物理地址的計(jì)算方法如下:







寄存器間接尋址方式讀取存儲(chǔ)單元的原理如圖所示。



在不使用段超越前綴的情況下,有下列規(guī)定:



若有效地址用SI、DI和BX等之一來(lái)指定,則其缺省的段寄存器為DS;

若有效地址用BP來(lái)指定,則其缺省的段寄存器為SS(即:堆棧段)。



例:假設(shè)有指令:MOV BX,[DI],在執(zhí)行時(shí),(DS)=1000H,(DI)=2345H,存儲(chǔ)單元12345H的內(nèi)容是4354H。問(wèn)執(zhí)行指令后,BX的值是什么?



解:根據(jù)寄存器間接尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),寄存器DI的值不是操作數(shù),而是操作數(shù)的地址。該操作數(shù)的物理地址應(yīng)由DS和DI的值形成,即: 



PA=(DS)*16+DI=1000H*16+2345H=12345H。



所以,該指令的執(zhí)行效果是:把從物理地址為12345H開(kāi)始的一個(gè)字的值傳送給BX。



其執(zhí)行過(guò)程如圖所示。













七種尋址方式(寄存器相對(duì)尋址方式)



操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)或變址寄存器(SI、D


I)的內(nèi)容和指令中的8位/16位偏移量之和。其有效地址的計(jì)算公式如公式所示。



在不使用段超越前綴的情況下,有下列規(guī)定:

 

    若有效地址用SI、DI和BX等之一來(lái)指定,則其缺省的段寄存器為DS;

 

    若有效地址用BP來(lái)指定,則其缺省的段寄存器為SS。

 

指令中給出的8位/16位偏移量用補(bǔ)碼表示。在計(jì)算有效地址時(shí),如果偏移量是8位,則進(jìn)行符號(hào)擴(kuò)展成16位。當(dāng)所得的有效地址超過(guò)0FFFFH,則取其64K的模。



例:假設(shè)指令:MOV BX, [SI+100H],在執(zhí)行它時(shí),(DS)=1000H,(SI)=2345H,內(nèi)存單元12445H的內(nèi)容為2715H,問(wèn)該指令執(zhí)行后,BX的值是什么?



解:根據(jù)寄存器相對(duì)尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:

 

EA=(SI)+100H=2345H+100H=2445H

 

該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:

 

PA=(DS)*16+EA=1000H*16+2445H=12445H。



所以,該指令的執(zhí)行效果是:把從物理地址為12445H開(kāi)始的一個(gè)字的值傳送給BX。



其執(zhí)行過(guò)程如圖所示。













七種尋址方式(基址加變址尋址方式)



操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)和一個(gè)變址寄存器(SI、DI)的內(nèi)容之和。其有效地址的計(jì)算公式如公式所示。



在不使用段超越前綴的情況下,規(guī)定:如果有效地址中含有BP,則缺省的段寄存器為SS;否則,缺省的段寄存器為DS。



例:假設(shè)指令:MOV BX, [BX+SI],在執(zhí)行時(shí),(DS)=1000H,(BX)=2100H,(SI)=0011H,內(nèi)存單元12111H的內(nèi)容為1234H。問(wèn)該指令執(zhí)行后,BX的值是什么?



解:根據(jù)基址加變址尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:



EA=(BX)+(SI)=2100H+0011H=2111H



該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:



PA=(DS)*16+EA=1000H*16+2111H=12111H



所以,該指令的執(zhí)行效果是:把從物理地址為12111H開(kāi)始的一個(gè)字的值傳送給BX。



其執(zhí)行過(guò)程如圖所示。




 



 


七種尋址方式(相對(duì)基址加變址尋址方式)



操作數(shù)在存儲(chǔ)器中,其有效地址是一個(gè)基址寄存器(BX、BP)的值、一個(gè)變址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的計(jì)算公式如公式所示。 



在不使用段超越前綴的情況下,規(guī)定:如果有效地址中含有BP,則其缺省的段寄存器為SS;否則,其缺省的段寄存器為DS。



指令中給出的8位/16位偏移量用補(bǔ)碼表示。在計(jì)算有效地址時(shí),如果偏移量是8位,則進(jìn)行符號(hào)擴(kuò)展成16位。當(dāng)所得的有效地址超過(guò)0FFFFH,則取其64K的模。



例:假設(shè)指令:MOV AX, [BX+SI+200H],在執(zhí)行時(shí),(DS)=1000H,(BX)=2100H,(SI)=0010H,內(nèi)存單元12310H的內(nèi)容為1234H。問(wèn)該指令執(zhí)行后,AX的值是什么?



解:根據(jù)相對(duì)基址加變址尋址方式的規(guī)則,在執(zhí)行本例指令時(shí),源操作數(shù)的有效地址EA為:



EA=(BX)+(SI)+200H=2100H+0010H+200H=2310H



該操作數(shù)的物理地址應(yīng)由DS和EA的值形成,即:



PA=(DS)*16+EA=1000H*16+2310H=12310H



所以,該指令的執(zhí)行效果是:把從物理地址為12310H開(kāi)始的一個(gè)字的值傳送給AX。其執(zhí)行過(guò)程如圖所示。



從相對(duì)基址加變址這種尋址方式來(lái)看,由于它的可變因素較多,看起來(lái)就顯得復(fù)雜些,但正因?yàn)槠淇勺円蛩囟?,它的靈活性也就很高。比如:

  

用D1[i]來(lái)訪(fǎng)問(wèn)一維數(shù)組D1的第i個(gè)元素,它的尋址有一個(gè)自由度,用D2[i][j]來(lái)訪(fǎng)問(wèn)二維數(shù)組D2的第i行、第j列的元素,其尋址有二個(gè)自由度。多一個(gè)可變的量,其尋址方式的靈活度也就相應(yīng)提高了。



相對(duì)基址加變址尋址方式有多種等價(jià)的書(shū)寫(xiě)方式,下面的書(shū)寫(xiě)格式都是正確的,并且其尋址含義也是一致的。



MOV AX, [BX+SI+1000H]   MOV AX, 1000H[BX+SI]

MOV AX, 1000H[BX][SI]    MOV AX, 1000H[SI][BX]



但書(shū)寫(xiě)格式BX [1000+SI]和SI[1000H+BX]等是錯(cuò)誤的,即所用寄存器不能在“[“,”]”之外,該限制對(duì)寄存器相對(duì)尋址方式的書(shū)寫(xiě)也同樣起作用。



相對(duì)基址加變址尋址方式是以上7種尋址方式中最復(fù)雜的一種尋址方式,它可變形為其它類(lèi)型的存儲(chǔ)器尋址方式。下表列舉出該尋址方式與其它尋址方式之間的變形關(guān)系。




本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
匯編指令與機(jī)器碼的相互轉(zhuǎn)換--中原教程網(wǎng)
學(xué)習(xí)匯編前你應(yīng)該知道的知識(shí)4 匯編程序-匯編語(yǔ)言學(xué)習(xí)
80386ASM程序設(shè)計(jì)基礎(chǔ)(二)
80X86匯編語(yǔ)言程序設(shè)計(jì)教程(楊季文)習(xí)題答案二
計(jì)算機(jī)指令系統(tǒng)的指令格式、尋址方式、指令種類(lèi)及與C代碼的對(duì)照
學(xué)習(xí)之道 【分享】匯編學(xué)習(xí)筆記 [論壇存檔] - 看雪軟件安全論壇
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服