(12)-3.3 指令的尋址方式_第1頁(yè)
(12)-3.3 指令的尋址方式_第2頁(yè)
(12)-3.3 指令的尋址方式_第3頁(yè)
(12)-3.3 指令的尋址方式_第4頁(yè)
(12)-3.3 指令的尋址方式_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

指令的尋址方式

3.3指令的尋址方式地址:數(shù)據(jù)和指令存放的位置。

尋址方式:尋找指令地址和操作數(shù)地址的方式尋址過(guò)程:形成指令地址和操作數(shù)地址的過(guò)程。數(shù)據(jù)存放的位置可以是寄存器、存儲(chǔ)器或I/O端口,指令存放的位置只能是存儲(chǔ)器中的代碼段。3.3指令的尋址方式操作數(shù)作為立即數(shù)就在指令中給出。立即數(shù)尋址例:MOVAX,1234H機(jī)器碼:B83412(低字節(jié)在地址小的單元)操作:把立即數(shù)1234H送寄存器AX中。3.3指令的尋址方式AHALAX...B83412...5678代碼段(存儲(chǔ)器中)操作碼(B8)操作數(shù)(1234H)

立即數(shù)一條指令1234MOVAX,1234H指令執(zhí)行后,AX=1234H(原有的內(nèi)容被新的內(nèi)容替換)。3.3指令的尋址方式操作數(shù)在某個(gè)固定的寄存器中。固定尋址(隱含尋址)這個(gè)固定的寄存器大多為AL或AX。例:AAA

操作:對(duì)固定寄存器AL中的內(nèi)容進(jìn)行十進(jìn)制調(diào)整,結(jié)果仍在AL中。(可能影響AH的內(nèi)容)結(jié)果AHAL十進(jìn)制調(diào)整影響+1送回3.3指令的尋址方式操作數(shù)在某個(gè)寄存器中。寄存器尋址例:INCBL

操作:使BL中內(nèi)容加1后送回若BL=00H,則執(zhí)行后BL=01HBL=FFH,則執(zhí)行后BL=00H(自動(dòng)溢出)+1BL00013.3指令的尋址方式操作數(shù)在存儲(chǔ)器中的一個(gè)或幾個(gè)單元中。在這種尋址方式下,要找到該操作數(shù),關(guān)鍵是必須找到該操作數(shù)所在單元的地址。由于8086采用存儲(chǔ)器段組織結(jié)構(gòu),內(nèi)存單元的地址由段起始地址

(基地址)和該單元與段起始地址之間的距離

(以字節(jié)數(shù)計(jì))兩部分共同決定。存儲(chǔ)器尋址3.3指令的尋址方式段起始地址(基地址):某個(gè)段寄存器的內(nèi)容(又稱段基值)乘以16得到。段內(nèi)偏移量:該單元與段起始地址之間的距離(字節(jié)數(shù))又稱有效地址EA。有效地址EA待尋址的內(nèi)存單元(CS,DS,ES,SS)16段基地址物理地址=段基值16+有效地址EA內(nèi)存單元物理地址3.3指令的尋址方式8086規(guī)定,在執(zhí)行某種操作時(shí),采用的段寄存器有一個(gè)預(yù)先的約定。故指令中一般只需給出有關(guān)EA的信息,則CPU將能夠根據(jù)該次操作自動(dòng)選用段寄存器,并與EA一起形成物理地址。存儲(chǔ)器尋址的實(shí)質(zhì)就是如何形成有效地址EA。3.3指令的尋址方式直接尋址方式指令中以偏移量方式直接給出操作數(shù)的有效地址。即EA=指令中給出的偏移量3.3指令的尋址方式例:MOVAX,[1234H]機(jī)器碼:A13412

操作:把偏移量1234H作為EA,在數(shù)據(jù)段中找到相應(yīng)的字單元,再將字單元的內(nèi)容送AX。3.3指令的尋址方式本例執(zhí)行完后,AX=3050HEA=1234H

設(shè)DS=3000H31234H1234H+EA=1234H31234H56783050DS16=30000H30000H=3000H×16...A13412......5030...指令代碼段數(shù)據(jù)段AHALAXMOVAX,[1234H]3.3指令的尋址方式注:a.直接尋址的操作過(guò)程與立即尋址不同。為表示它們的區(qū)別,直接尋址的偏移量用一對(duì)“[]”表示。立即尋址:MOVAX,1234H直接尋址:MOVAX,[1234H]b.段基值乘以16,相當(dāng)于段基值(二進(jìn)制表示)左移4位,或段基值(十六進(jìn)制表示)在末尾添一個(gè)0H。3.3指令的尋址方式以間接的方式得到有效地址EA,有幾個(gè)專用的寄存器可用于間接尋址:BX,BP,SI,DI。a.基址尋址方式以BX作為基址尋址寄存器,操作數(shù)在數(shù)據(jù)段中。以BP作為基址尋址寄存器,操作數(shù)在堆棧段中。間接尋址方式EA=BX或BP的內(nèi)容+8位或16位位移量3.3指令的尋址方式例:MOVAX,[BX]機(jī)器碼:8B04

操作:以BX的內(nèi)容作為有效地址EA,在

數(shù)據(jù)段中找到對(duì)應(yīng)的字單元,再

將該字單元的內(nèi)容送AX中。EA=BX(位移量為0)3.3指令的尋址方式設(shè)DS=2000H,BX=1000H本例執(zhí)行后AX=50A0HDS=2000HDS1620000HEA=BX(=1000H)21000H50A08B......04A050代碼段數(shù)據(jù)段AXAHAL這種尋址方式的優(yōu)點(diǎn)就在于可以隨時(shí)修改BX寄存器的內(nèi)容,而指向不同的存儲(chǔ)單元。故BX又稱為基址指針寄存器。3.3指令的尋址方式例:MOVAL,DATA[BP]

操作:以EA作為有效地址,在堆棧

段中去尋址字節(jié)單元,再將該字節(jié)單元內(nèi)容送AL。

這里DATA是以符號(hào)表示的位移量。

EA=BP+位移量DATA3.3指令的尋址方式以SI,DI寄存器作為間接尋址寄存器,操作數(shù)在數(shù)據(jù)段中。變址尋址方式EA=SI或DI內(nèi)容+8位或16位位移量例:ADDAX,[SI]

EA=SI操作:以EA作為有效地址,在數(shù)據(jù)段中找到某個(gè)操作數(shù),再將該操作數(shù)與AX的內(nèi)容相加,結(jié)果存放在AX中。3.3指令的尋址方式既有基址寄存器(BX或BP),又有變址寄存器參與(SI或DI)尋址,操作數(shù)在基址寄存器所規(guī)定的段中。同一組內(nèi)的寄存器不能同時(shí)出現(xiàn)?;纷冎穼ぶ贩绞交蛳鄬?duì)基址變址尋址方式EA=(BX)(BP)+(SI)(DI)+8位16位位移量

基址變址EA=(BX)(BP)+(SI)(DI)基址寄存器變址寄存器3.3指令的尋址方式例:MOVAX,0260H[BX][SI]

EA=BX+SI+0260H,操作數(shù)在數(shù)據(jù)段中

MOVAX,INF[BP+DI]EA=BP+DI+位移量INF,操作數(shù)在堆棧段中以上兩種基址+變址的格式都是合法的。3.3指令的尋址方式

基址變址尋址中的操作數(shù)的有效地址是一個(gè)基址寄存器(如BX、BP)和一個(gè)變址寄存器(如SI、DI)的內(nèi)容之和,兩個(gè)寄存器均由指令指出。操作數(shù)的段地址分配和前面所述相同,即使用默認(rèn)段基址或使用段超越前綴來(lái)指定段基址。例

MOVAX,[BX][DI]或MOVAX,[BX+DI]設(shè)DS=2000HDI=1000HBX=8000H,則該指令表示將物理地址=20000H+8000H+1000H=29000H為首地址的一個(gè)字的內(nèi)容送AX中。基址變址尋址3.3指令的尋址方式相對(duì)基址變址尋址相對(duì)基址變址尋址相對(duì)基址變址尋址中操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器的內(nèi)容和8位或16位位移量這三者之和。同樣地,當(dāng)使用基址寄存器BX時(shí),缺省的段寄存器是DS;當(dāng)使用基址寄存器BP時(shí),缺省的段寄存器是SS。3.3指令的尋址方式這類指令規(guī)定:相對(duì)基址變址尋址源串操作數(shù)在數(shù)據(jù)段,且有效地址EA=SI目的串操作數(shù)在附加段,且有效地址EA=DI指令執(zhí)行后,自動(dòng)修改SI,DI的值,使之指向新的單元。3.3指令的尋址方式8086的段約定8086在執(zhí)行某種操作時(shí),預(yù)先規(guī)定了采用的段寄存器和段,即有基本的段約定。如果要改變默認(rèn)的段約定,則需要在指令中明確指出來(lái)。3.3指令的尋址方式8086/8088的段約定存儲(chǔ)器存取方式基本段約定允許修改的段偏移地址取指令堆棧操作源串目的串用BP作基址寄存器通用數(shù)據(jù)讀寫(xiě)CSSSDSESSSDS無(wú)無(wú)ES,CS,SS無(wú)CS,DS,ESCS,ES,SSIPSPSIDIEAEA3.3指令的尋址方式I/O端口尋址方式操作數(shù)在某個(gè)8位或16位端口中。

注:端口的輸入、輸出數(shù)據(jù)只能置于累加器AL或AX中。端口地址可以置于DX中,但不能置于其它寄存器中。3.3指令的尋址方式直接端口尋址端口輸入INAL,portport=端口地址(8位,0~255)例:INAL,80H操作:從端口地址為80H的端口輸入一字節(jié)送AL。端口輸出OUTport,AL3.3指令的尋址方式間接端口尋址

可以把端口地址送入DX,

然后進(jìn)行端口尋址:輸入:INAL,DX輸出:OUTDX,AL3.3指令的尋址方式間接端口尋址

注:①若用AX代替AL,則表示16

位數(shù)據(jù)的端口。②端口地址大于255時(shí),必須將端口地址送入DX,即采

用間接尋址端口方式。3.3指令的尋址方式轉(zhuǎn)移類指令的尋址方式

前面所述的各種尋址方式實(shí)際上是數(shù)

據(jù)尋址方式,關(guān)鍵是如何找到操作數(shù)。轉(zhuǎn)移類指令尋址方式屬于程序存儲(chǔ)器尋址,關(guān)鍵是要找到下一條待執(zhí)行指令的地址。3.3指令的尋址方式如何尋找指令的地址呢?

程序中將要執(zhí)行的指令的地址由CS:IP指向,一般程序是一條接一條的順序執(zhí)行的,所以CS:IP自動(dòng)加1即可實(shí)現(xiàn)。當(dāng)程序跳轉(zhuǎn)執(zhí)行時(shí),CS:IP采用直接方式或間接方式改為跳轉(zhuǎn)到de

指令地址。程序的第一條指令的地址(首地址)由操作系統(tǒng)OS分配產(chǎn)生;3.3指令的尋址方式(1)轉(zhuǎn)移范圍段內(nèi)轉(zhuǎn)移:轉(zhuǎn)移范圍在同一個(gè)段以內(nèi)段間轉(zhuǎn)移:從一個(gè)代碼段轉(zhuǎn)移至另一個(gè)代碼段(2)轉(zhuǎn)移條件無(wú)條件轉(zhuǎn)移有條件轉(zhuǎn)移(轉(zhuǎn)移范圍僅為–128~+127)(3)轉(zhuǎn)移方式直接轉(zhuǎn)移(轉(zhuǎn)移目標(biāo)直接在指令中給出)間接轉(zhuǎn)移(轉(zhuǎn)移目標(biāo)預(yù)先放入某個(gè)寄存器或存儲(chǔ)器中)3.3指令的尋址方式轉(zhuǎn)移類指令的尋址方式無(wú)條件轉(zhuǎn)移指令格式:JMP目標(biāo)功能:無(wú)條件轉(zhuǎn)移到目標(biāo)處。其中的目標(biāo)有各種尋址方式。這些尋址方式可以被分為段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移兩類。段內(nèi)轉(zhuǎn)移只影響指令指針I(yè)P值;段間轉(zhuǎn)移既要影響IP值,也要影響代碼段寄存器CS的值。本節(jié)討論的尋址方式是用來(lái)確定轉(zhuǎn)移及調(diào)用指令的轉(zhuǎn)向地址。為了敘述方便,以8086/8088的無(wú)條件轉(zhuǎn)移指令為例來(lái)說(shuō)明。3.3指令的尋址方式段內(nèi)尋址--段內(nèi)直接尋址

轉(zhuǎn)移地址時(shí),不改變CS值,在當(dāng)前IP上加一個(gè)位移量,即EA=(IP)+disp8disp16

該位移量是一個(gè)相對(duì)于指令指針的帶符號(hào)數(shù)。

位移量

當(dāng)前IP值

轉(zhuǎn)移的目標(biāo)地址IP+

指令3.3指令的尋址方式段內(nèi)尋址--段內(nèi)直接尋址段內(nèi)近轉(zhuǎn)移:位移量為16位例如:JMPNEARPTRADDR1或JMPADDR1段內(nèi)短轉(zhuǎn)移:位移量為8位,例如:JMPSHORTADDR2在與當(dāng)前16位的IP值相加時(shí),系統(tǒng)自動(dòng)把8位位移量擴(kuò)展成16位,擴(kuò)展方法是高8位全部用位移量的符號(hào)位值填充。3.3指令的尋址方式段內(nèi)尋址--段內(nèi)直接尋址——轉(zhuǎn)向的有效地址EA是一個(gè)寄存器或存儲(chǔ)單元的內(nèi)容。有效地址用來(lái)取代IP,并CS值不變。除立即數(shù)以外的任何一種數(shù)據(jù)尋址方式得到寄存器

存儲(chǔ)器單元根據(jù)尋址方式確定指令

有效地址在3.3指令的尋址方式段內(nèi)尋址--段內(nèi)間接尋址

例如:若(BX)=1256H,(DS)=2000H,TABLE=2012H,(23268H)=3476H,則:JMPBX段內(nèi)間接轉(zhuǎn)移,執(zhí)行后(IP)=EA=(BX)=1256H

JMPWORDPTR[BX+TABLE]

執(zhí)行后,EA=(BX)+disp=3268H3.3指令的尋址方式段內(nèi)尋址--段內(nèi)直接尋址——指令中提供了轉(zhuǎn)向的段地址和偏移地址,故用段地址取代CS,用偏移地址取代IP。例如:JMP3500H:120BH;則(CS)=3500H,(IP)=120BHIPCS指令

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論