匯編語(yǔ)言程序設(shè)計(jì)第三章4課件_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第三章4課件_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第三章4課件_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第三章4課件_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第三章4課件_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

IBM-PC匯編語(yǔ)言程序設(shè)計(jì)第3章80×86的指令系統(tǒng)和尋址方式第一節(jié)、80×86的尋址方式

第二節(jié)、程序占有的空間和執(zhí)行時(shí)間

第三節(jié)、80×86的指令系統(tǒng)

第一節(jié)、80×86的尋址方式

一、指令的概念二、尋址方式取指令、取數(shù)、存數(shù)時(shí),都要訪問(wèn)內(nèi)存,被訪問(wèn)內(nèi)存單元的地址由CPU提供DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器CPU內(nèi)存8088編程結(jié)構(gòu)DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器8086/8088編程結(jié)構(gòu)BIUEU可表示為:

物理地址PA=段地址+偏移地址

=(段寄存器)×16+偏移地址

=(段寄存器)×10H+偏移地址即段寄存器的內(nèi)容左移4位,加上偏移地址16位段地址01516位偏移地址015000020位物理地址019測(cè)試:(DS)=3000H,(ES)=3100H,(BX)=0100H,問(wèn)DS:BX=??ES:BX=??2、指令格式操作碼指示指令所要完成的操作(即:要做什么?)例如,數(shù)據(jù)傳送、加法和減法等。

注意:操作碼是指令中必不可少的部分。一條指令可以沒(méi)有操作數(shù),但不可以沒(méi)有操作碼。指令一般由操作碼和一個(gè)或多個(gè)操作數(shù)組成。如:操作碼操作數(shù)

MOV

AX,

BX

操作碼操作數(shù)...操作數(shù)按操作碼實(shí)現(xiàn)的功能,指令可以分為6類(lèi)。數(shù)據(jù)傳送算術(shù)運(yùn)算邏輯運(yùn)算串操作控制轉(zhuǎn)移處理機(jī)控制

按功能指令分六類(lèi)操作數(shù)指示指令執(zhí)行過(guò)程中所需要的數(shù)據(jù),如加法指令中加數(shù)和被加數(shù)等,這些數(shù)據(jù)可以是操作數(shù)本身,也可以來(lái)自某寄存器或存儲(chǔ)器單元。一條指令中可以包含一個(gè)或多個(gè)操作數(shù),指定操作數(shù)所在位置的方法稱(chēng)為尋址方式。了解操作數(shù)的來(lái)源、個(gè)數(shù)、類(lèi)型(2)操作數(shù)個(gè)數(shù)

按指令格式中,操作數(shù)個(gè)數(shù)的多少分為三類(lèi):無(wú)操作數(shù):指令只有一個(gè)操作碼,沒(méi)有操作數(shù)

如:NOP,HLT,CLC單操作數(shù):指令中給出一個(gè)操作數(shù)如:INCDI雙操作數(shù):指令中給出兩個(gè)操作數(shù)。①無(wú)操作數(shù):指令只有一個(gè)操作碼,沒(méi)有操作數(shù)▲有些操作不需要操作數(shù)。如HLT,NOP等處理機(jī)控制指令。②單操作數(shù):

指令中給出一個(gè)操作數(shù)。有兩種可能:▲有些操作只需要一個(gè)操作數(shù)如INCAL;(AL)←(AL)+1▲有些操作將另一個(gè)操作數(shù)隱含在指令中如MULBL;(AX)←(AL)×(BL)(3)操作數(shù)類(lèi)型8086/8088:有的操作既可對(duì)字節(jié)操作,又可對(duì)字操作有的操作只允許對(duì)字操作指令應(yīng)指明參與操作的數(shù)是字節(jié)還是字,即操作數(shù)的類(lèi)型。通常操作數(shù)的類(lèi)型可由操作數(shù)本身隱含給出。只在特殊情況下需要明確地指明是什么類(lèi)型的操作。①指令中有寄存器操作數(shù),由寄存器操作數(shù)決定類(lèi)型。

例:MOV[BX],AL

;字節(jié)操作,[BX]←ALMOV[BX],AX

;字操作,[BX]←AL,[BX+1]←AH②指令操作數(shù)中無(wú)寄存器,則由內(nèi)存操作數(shù)的類(lèi)型決定。value

00H….內(nèi)存value

00H00H例

value是一個(gè)變量(即內(nèi)存操作數(shù));

若定義value為字節(jié)類(lèi)型

:

則MOVvalue,0是字節(jié)操作。

若定義value為字類(lèi)型

:

則MOVvalue,0是一個(gè)字操作。1、與數(shù)據(jù)有關(guān)的尋址方式2、與轉(zhuǎn)移地址有關(guān)的尋址方式二、尋址方式尋址方式指的是指令按什么方式給出操作數(shù)或與其有關(guān)的地址信息。(1)8086的尋址方式共7種尋址方式:1.立即數(shù)尋址2.寄存器尋址3.

直接尋址4.

寄存器間接尋址5種與內(nèi)存單元5.寄存器相對(duì)尋址有關(guān)的尋址6.

基址變址尋址(存儲(chǔ)器操作數(shù))7.

相對(duì)基址變址尋址1、與數(shù)據(jù)有關(guān)的尋址方式①立即數(shù)尋址

操作數(shù)在指令中,取來(lái)指令立即可得到操作數(shù)。稱(chēng)該操作數(shù)為立即數(shù)。立即數(shù)可以是8位或16位。立即數(shù)常用來(lái)給寄存器或內(nèi)存單元賦初值。例:MOVAL,64H;AL←64H MOV AX,2058H;AX←2058HMOVAL,‘A’

立即數(shù)只能為整數(shù),且只能做源操作數(shù)只能用于

SRC字段

MOV40H,ALSRC和DST的字長(zhǎng)一致

MOVAH,3064H××注意:②寄存器尋址方式操作數(shù)在寄存器中,指令中指定寄存器名

8位操作數(shù),用8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL16位操作數(shù),用16位寄存器:AX、BX、CX、DX、SP、BP、SI、DI例MOVBL,AH

執(zhí)行前:(BL)=12H,(AH)=78H

執(zhí)行后:(BL)=78H(AH)=78H注意:寄存器尋址方式只涉及通用寄存器。字節(jié)操作數(shù)只涉及AHALBHBLCHCLDHDLSRC和DST的字長(zhǎng)一致

MOVAH,BXCS不能用

MOV指令改變

MOVCS,AX××總結(jié):立即數(shù)尋址、寄存器尋址的操作數(shù),不用在取完指令后再到內(nèi)存中取數(shù)。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器后面提到的

5

中尋址方式,

操作數(shù)存放在內(nèi)存中,取完指令后,還需到內(nèi)存取數(shù)。

指令中給出的是該操作數(shù)的地址,包括段地址和偏移地址。DSESSSCSIP數(shù)據(jù)暫存器PSW標(biāo)志寄存器執(zhí)行部件控制電路指令譯碼器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器組指令隊(duì)列總線接口控制電路運(yùn)算器地址加法器、、、指令1指令2指令3指令4、、、數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)3、、、地址總線AB數(shù)據(jù)總線DB控制總線CB地址譯碼器內(nèi)存單元的地址由段地址和偏移地址構(gòu)成為減短指令長(zhǎng)度,指令中只給出偏移地址的來(lái)源,段地址由默認(rèn)關(guān)系給出。

MOVAL,[2000H]默認(rèn)的段地址為DS內(nèi)的內(nèi)容CPU根據(jù)偏移地址給出的方式,按默認(rèn)關(guān)系自動(dòng)選擇段寄存器,獲取段值,由段值、偏移值構(gòu)成操作數(shù)所在內(nèi)存單元的物理地址。上例PA=(DS)×10H+2000H即選擇DS寄存器的內(nèi)容為段地址。指令中用[]給出偏移地址。操作數(shù)的偏移地址又稱(chēng)有效地址EA(EfficientAddress)按給出偏移地址方式的不同,分為以下5

種:直接尋址

MOVAL,[1000H]寄存器間接尋址

MOVAL,[BX]寄存器相對(duì)尋址

MOVAL,[BX+10H]基址變址尋址

MOVAL,[BX+SI]

相對(duì)基址變址尋址

MOVAL,[BX+SI+10H]③直接尋址方式存儲(chǔ)器操作數(shù)的有效地址EA在指令中直接給出OP5820存儲(chǔ)器數(shù)據(jù)段AXALAH代碼段00102100020000例:MOVAX,[1000H]對(duì)此例,沒(méi)有用前綴指明操作數(shù)在哪一段,則默認(rèn)在數(shù)據(jù)段中,設(shè)(DS)=2000H,則操作數(shù)的物理地址為:

20000+1000=21000H于是訪問(wèn)該存儲(chǔ)器取出其內(nèi)容送AX例:MOVAX,[1000H]

若(DS)=2000H

內(nèi)存操作數(shù)的物理地址為:

PA=(DS)×10H+EA=2000H×10H+1000H=21000H

執(zhí)行后(AX)=3040H

注意指令MOVAX,[1000H]

與指令MOVAX,1000H有什么不同?默認(rèn)段寄存器為DS。操作數(shù)所在內(nèi)存單元的物理地址為:

PA=(DS)×10H+EA又例:MOV

BX,ES:[1000H]

則是將ES段的1000H及1001H兩單元(字操作,取兩個(gè)字節(jié))內(nèi)容取出送BX。

在匯編語(yǔ)言程序中,不直接用數(shù)值表示偏移地址,用符號(hào)代替數(shù)值表示地址,稱(chēng)符號(hào)地址(變量名)。例符號(hào)buffer表示一個(gè)地址。

MOVAX,[buffer]或?qū)懗蒑OVAX,buffer

源操作數(shù)為buffer指向的內(nèi)存單元的內(nèi)容符號(hào)地址(變量名)經(jīng)匯編連接后,與一個(gè)確定的數(shù)值地址相對(duì)應(yīng)可用操作符Offset

獲取變量的偏移地址。故PA=(DS)×10H+Offsetbuffer

指令執(zhí)行結(jié)果(AX)=0B0AH④寄存器間接尋址

這種尋址方式時(shí),操作數(shù)在存儲(chǔ)器中,而操作數(shù)有效地址由BX、BP、SI和DI中的一個(gè)指出,若未用前綴指明,默認(rèn)關(guān)系為A、使用BX、SI、DI,默認(rèn)段寄存器為DS(BX)PA=(DS)×10H+(SI)(DI)B、使用BP,默認(rèn)段寄存器為SSPA=(SS)×10H+(BP)注意:寄存器間接尋址中的寄存器只有四個(gè),并不是任意一個(gè)寄存器都行。例:

MOVAX,[DI]

若(DS)=3000H(DI)=2000H

則內(nèi)存操作數(shù)的物理地址為:PA=(DS)×10H+(DI)=32000H

執(zhí)行后(AX)=(32000H)=400BH注意指令MOVAX,[DI]

與指令MOVAX,DI有什么不同?MOVAX,[BX]PA=10hx(DS)+(BX)MOVAX,ES:[BX]PA=10h(ES)+(BX)MOVAX,[BP]PA=10h(SS)+(BP)格式舉例:不允許使用AX、CX、DX存放EA(偏移地址,有效地址)MOVAX,[CX]SRC和DST的字長(zhǎng)一致

MOVDL,[BX];[BX]指示一個(gè)字節(jié)單元

MOVDX,[BX];[BX]指示一個(gè)字單元適于數(shù)組、字符串、表格的處理強(qiáng)調(diào):操作數(shù)的有效地址由一個(gè)寄存器與一個(gè)偏移量相加得到偏移量(相對(duì)量)在指令中給出,范圍在0000~FFFFH可用的寄存器有BX、DI

、SI、BP,與寄存器間接尋址相同如:MOVAL,[BX+10H]MOVAH,[DI+20H]MOVDL,30H[SI]MOVDH,40H[BP]⑤寄存器相對(duì)尋址這樣有效地址EA的構(gòu)成為:默認(rèn)段寄存器的關(guān)系與寄存器間接尋址相同A、使用BX、SI、DI,默認(rèn)段寄存器為DS(BX)PA=(DS)×10H+(SI)+偏移量

(DI)B、使用BP,默認(rèn)段寄存器為SSPA=(SS)×10H+(BP)+偏移量

例:

MOVAX,[BX+30H]

若(DS)=2000H(BX)=1000H

則內(nèi)存操作數(shù)的物理地址為:

PA=(DS)×10H+(BX)+30H=21030H

指令執(zhí)行后:

(AX)=(21030H)=8976H例:

MOVAX,60H[BP]

若(SS)=3000H(BP)=200H

則內(nèi)存操作數(shù)的物理地址為:

PA=(SS)×10H+(BP)+60H=30260H

指令執(zhí)行后:

(AX)=(30260H)=0ABCH例:MOV AX,[COUNT+BP]

若(SS)==5000H,

(BP)=3000H,

COUNT=2040HOP4855存儲(chǔ)器堆棧段AXALAH代碼段40205504050000OP位移量COUNT操作碼⑥基址加變址尋址

操作數(shù)的有效地址由一個(gè)基址寄存器與一個(gè)變址寄存器之和給出??捎玫幕芳拇嫫鳛锽X、BP

變址寄存器為SI、DI

如MOVAL,[BX+SI]MOVAX,[BX][DI]MOVDL,[BP+SI]MOVDX,[BP][DI]

默認(rèn)段寄存器由基址寄存器決定。A、

基址寄存器為BX,默認(rèn)段寄存器為DS(SI)PA=(DS)×10H+(BX)+(DI)B、基址寄存器為BP,默認(rèn)段寄存器為SS(SI)PA=(SS)×10H+(BP)+

(DI)注意:只是默認(rèn)關(guān)系,但是可以通過(guò)聲明改變例:

MOVAX,[BX+SI]

若(DS)=4000H(BX)=2000H(SI)=100H

則內(nèi)存操作數(shù)的物理地址為:

PA=(DS)×10H+(BX)+(SI)=42100H

指令執(zhí)行后

(AX)=(42100H)=2345H

格式舉例:

MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]注意:必須是一個(gè)基址寄存器和一個(gè)變址寄存器的組合

MOVAX,[BX][BP]

MOVAX,[SI][DI]⑦相對(duì)基址加變址尋址

操作數(shù)的有效地址由基址寄存器、變址寄存器、偏移量三者之和給出。可用的寄存器與基址加變址尋址方式相同基址寄存器有BX、BP

變址寄存器有SI、DI如MOVAL,[BX+SI+10H]MOVAX,20H[BX][DI]MOVDL,[BP+SI+30H]MOVDX,40H[BP][DI]

默認(rèn)段寄存器由基址寄存器決定,與基址加變址尋址相同①基址寄存器為BX,默認(rèn)段寄存器為DS

(SI)PA=(DS)×10H+(BX)++偏移量

(DI)②基址寄存器為BP,默認(rèn)段寄存器為SS

(SI)PA=(SS)×10H+(BP)++偏移量

(DI)例:

MOVAX,[BX+SI+10H]

若(DS)=4000H(BX)=3000H(SI)=200H

則內(nèi)存操作數(shù)的物理地址為:

PA=(DS)×10H+(BX)+(SI)+10H=43210H

指令執(zhí)行后

(AX)=(43210H)=8877H例:MOVAX,[MASK+BX+DI]

設(shè):(DS)=3000H,

(BX)=1346H

(DI)=0500H,

MASK=1234HOP4855存儲(chǔ)器數(shù)據(jù)段AXALAH代碼段341232A7AH30000HOP位移量MASK操作碼31346H3257AH(DI)(BX)MASK內(nèi)存操作數(shù)按給出偏移地址方式的不同,有以下5種尋址方式:直接尋址

MOVAL,[1000H]寄存器間接尋址

MOVAL,[BX]寄存器相對(duì)尋址

MOVAL,[BX+10H]基址加變址寄存器

MOVAL,[BX+SI]

相對(duì)基址加變址寄存器

MOVAL,[BX+SI+10H]存儲(chǔ)器操作數(shù)的段地址按默認(rèn)關(guān)系得到。特點(diǎn):有BP默認(rèn)SS

無(wú)BP默認(rèn)DS尋址方式的幾點(diǎn)說(shuō)明:1.不自創(chuàng)尋址方式

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論