8086CPU指令系統(tǒng) (2)市公開課一等獎省賽課獲獎?wù)n件_第1頁
8086CPU指令系統(tǒng) (2)市公開課一等獎省賽課獲獎?wù)n件_第2頁
8086CPU指令系統(tǒng) (2)市公開課一等獎省賽課獲獎?wù)n件_第3頁
8086CPU指令系統(tǒng) (2)市公開課一等獎省賽課獲獎?wù)n件_第4頁
8086CPU指令系統(tǒng) (2)市公開課一等獎省賽課獲獎?wù)n件_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本教案內(nèi)容第3章8086CPU指令系統(tǒng)匯編語言指令8086指令分類數(shù)據(jù)與轉(zhuǎn)移地址尋址方式數(shù)據(jù)傳送類指令算術(shù)運算類指令邏輯運算類指令移位類指令標(biāo)志位操作指令轉(zhuǎn)移指令循環(huán)控制指令子程序調(diào)用返回指令中止調(diào)用返回指令字符串操作指令I(lǐng)/O輸入輸出指令其它指令宏指令8086CPU指令系統(tǒng)(2)第1頁3.11子程序調(diào)用返回指令概念:子程序為功效確定、且獨立程序段。優(yōu)點:能夠?qū)⑷魏我欢为毩⒊绦驓w整為一個子程序,當(dāng)需要該段程序時,只需調(diào)用子程序即可,調(diào)用后會自動返回到調(diào)用指令下一條指令。所以采取子程序設(shè)計時,能夠簡化程序設(shè)計。從調(diào)試程序角度,因為原本在多處出現(xiàn)程序段,縮減為子程序調(diào)用指令,使調(diào)試程序愈加方便。8086CPU指令系統(tǒng)(2)第2頁3.11子程序調(diào)用返回指令缺點:采取子程序設(shè)計后。因為調(diào)用子程序和從子程序中返回需要執(zhí)行指令,而且為保護一些存放器內(nèi)容,需要進行壓入堆棧和彈出堆棧操作,所以會使程序執(zhí)行速度受到一定影響。

8086CPU指令系統(tǒng)(2)第3頁3.11子程序調(diào)用返回指令實現(xiàn):子程序調(diào)用是經(jīng)過自動修改(IP)和/或(CS)內(nèi)容實現(xiàn)。為了確保子程序調(diào)用后能夠返回到調(diào)用指令之后,CALL指令會自動保留返回地址(IP和/或CS),而RET指令會自動返回到CALL指令下一條指令。

8086CPU指令系統(tǒng)(2)第4頁3.11子程序調(diào)用返回指令一、子程序調(diào)用指令CALL子程序調(diào)用指令CALL(Callprocedure)有兩種格式:CALLLABEL ;調(diào)用入口地址為;標(biāo)號LABEL子程序CALLOPR ;調(diào)用子程序,其入口地址;為操作數(shù)OPR內(nèi)容

8086CPU指令系統(tǒng)(2)第5頁3.11子程序調(diào)用返回指令CALLLABEL ;調(diào)用入口地址為;標(biāo)號LABEL子程序分三種情況:(1)當(dāng)標(biāo)號LABEL與CALL指令不在同一個段內(nèi)時,子程序調(diào)用在段間進行,其完成操作有:CS入棧,IP入棧;(IP)←LABEL偏移地址;(CS)←LABEL段地址。指令尋址方式為段間直接尋址。8086CPU指令系統(tǒng)(2)第6頁3.11子程序調(diào)用返回指令(2)當(dāng)標(biāo)號LABEL與CALL指令在同一個段內(nèi),且能夠采取8位有符號數(shù)表示其相對位移量時,則子程序調(diào)用在段內(nèi)進行,其完成操作有:IP入棧;(IP)←(IP)+DISP8。指令尋址方式為段內(nèi)直接尋址,也稱為相對尋址。(3)當(dāng)標(biāo)號LABEL與CALL指令在同一個段內(nèi),且需要采取16位有符號數(shù)表示其相對位移量時,則子程序調(diào)用在段內(nèi)進行,其完成操作有:IP入棧;(IP)←(IP)+DISP16。指令尋址方式為段內(nèi)直接尋址,也稱相對尋址。8086CPU指令系統(tǒng)(2)第7頁3.11子程序調(diào)用返回指令CALLOPR ;調(diào)用子程序,其入口地址;為操作數(shù)OPR內(nèi)容分為三種情況:(1)當(dāng)OPR為16位通用存放器REG16時,則子程序調(diào)用在段內(nèi)進行,其完成操作有:IP入棧;(IP)←(REG16)。指令尋址方式為段內(nèi)間接尋址。8086CPU指令系統(tǒng)(2)第8頁3.11子程序調(diào)用返回指令(2)當(dāng)OPR為16位存放單元RAM時,則子程序調(diào)用在段內(nèi)進行,其完成操作有:IP入棧;(IP)←(RAM)。指令尋址方式為段內(nèi)間接尋址。(3)當(dāng)OPR為32位存放單元RAM時,則子程序調(diào)用在段間進行,其完成操作有:CS入棧,IP入棧;(IP)←(RAM),(CS)←(RAM+2)。指令尋址方式為段間間接尋址。8086CPU指令系統(tǒng)(2)第9頁3.11子程序調(diào)用返回指令二、子程序返回指令RET子程序返回指令RET(Returnfromprocedure)有三種格式:RET ;用于段內(nèi)子程序返回,完成IP出棧,即(IP)←(SP)RETF ;用于段間子程序返回,完成IP出棧,CS出棧RETn ;完成RET(或RETF)指令功效后,(SP)←(SP)+n8086CPU指令系統(tǒng)(2)第10頁3.11子程序調(diào)用返回指令三、過程定義在IBMPC匯編過程中,子程序通常以過程方式編寫。過程定義格式:過程名PROC[類型]

RET過程名ENDP其中,過程名是用戶給子程序起名字,它能夠看作為標(biāo)號,含有段地址、偏移地址和類型屬性。子程序類型能夠取NEAR(近程過程,可供段內(nèi)調(diào)用)和FAR(遠程過程,可供段間調(diào)用),當(dāng)類型缺省時,表示NEAR(近程過程)。

8086CPU指令系統(tǒng)(2)第11頁一個子程序名一但定義,就含有以下三個屬性段地址段內(nèi)偏移地址類型FARNEAR(可缺?。┚褪亲映绦虻谝粭l指令地址3.11子程序調(diào)用返回指令8086CPU指令系統(tǒng)(2)第12頁3.11子程序調(diào)用返回指令子程序還能夠是另一個形式:〈標(biāo)號〉:

RET8086CPU指令系統(tǒng)(2)第13頁子程序調(diào)用與返回指令應(yīng)用結(jié)構(gòu)①段內(nèi)子程序調(diào)用與返回;主程序CODESEGMENTASSUMECS:CODESTART:

……3.11子程序調(diào)用返回指令8086CPU指令系統(tǒng)(2)第14頁………;子程序SUB1SUB1PROCNEAR

RET;SUB1ENDPCODEENDSENDSTARTCALL

NEARPTR

SUB1能夠省略●IP←((SP))●SP←(SP)+2●SP←(SP)-2●((SP))←返回地址(IP)●IP←(IP)+16位DISP3.11子程序調(diào)用返回指令8086CPU指令系統(tǒng)(2)第15頁

;主程序CODEMSEGMENTASSUMECS:CODEMSTART:CALLFARPTRSUB2MOVAH,4CHINT21HCODEMENDS……

;子程序CODESSEGMENTASSUMECS:CODESSUB2PROCFAR

RETF;也能夠?qū)懗蒖ETSUB2ENDPCODESENDSENDSTART……①IP←((SP))SP←(SP)+2②CS←((SP))SP←(SP)+2①SP←(SP)-2((SP))←返回地址(CS)②SP←(SP)-2((SP))←返回地址(IP)③IP←OFFSETSUB2CS←SEGSUB28086CPU指令系統(tǒng)(2)第16頁3.11子程序調(diào)用返回指令例3.32子程序設(shè)計,編寫子程序?qū)崿F(xiàn)統(tǒng)計一個字(AX)中“1”個數(shù)。解:利用移位指令或循環(huán)移位指令,每次對CF位進行檢測位:當(dāng)CF=1時,則總個數(shù)加1;當(dāng)CF=0時,則總個數(shù)不變。這種操作能夠采取有條件轉(zhuǎn)移指令來實現(xiàn),但更方便方式是采取ADC指令實現(xiàn)。子程序以下:

8086CPU指令系統(tǒng)(2)第17頁3.11子程序調(diào)用返回指令COUNTER1PROCNEARPUSHAX MOVCX,16 XORBL,BLCOU1: SHRAX,1 ADCBL,0 LOOPCOU1POPAXRETCOUNTER1ENDP8086CPU指令系統(tǒng)(2)第18頁3.11子程序調(diào)用返回指令例3.33子程序應(yīng)用。利用上例設(shè)計子程序,統(tǒng)計字型變量VAR1中1個數(shù)。解:在數(shù)據(jù)段中定義變量VAR1和CounterVar1:

VAR1 DW 1234H CounterVar1 DB?則可在代碼段中編寫程序: MOVAX,VAR1 CALLCOUNTER1 MOV CounterVar1,BL執(zhí)行后,結(jié)果單元CounterVar1值為5,說明1234H中包含有5個“1”。

8086CPU指令系統(tǒng)(2)第19頁3.11子程序調(diào)用返回指令例3.34編寫以十六進制數(shù)顯示AL和AX內(nèi)容子程序(DISPAL、DISPAX)。解:先編寫顯示AL存放器內(nèi)容子程序DISPAL。因為AL中有兩位十六進制數(shù),每一位值為0~9、0AH~0FH,在顯示時需要將它們轉(zhuǎn)換成對應(yīng)ASCII碼,然后調(diào)用INT21H02H號功效進行顯示。子程序DISPAL以下:8086CPU指令系統(tǒng)(2)第20頁3.11子程序調(diào)用返回指令DISPAL PROCNEARPUSHAXPUSHCXPUSHDXPUSHAXMOVCL,4 ;處理高位十六進制數(shù)SHRAL,CLCALLCHANG ;十六進制數(shù)變換成ASCII碼MOVAH,02MOVDL,ALINT21H ;顯示一位字符

8086CPU指令系統(tǒng)(2)第21頁3.11子程序調(diào)用返回指令POPAXANDAL,0FH ;處理低位十六進制數(shù)CALLCHANG ;十六進制數(shù)變換成ASCII碼MOVAH,02MOVDL,ALINT21H ;顯示一位字符POPDXPOPCXPOPAXRETDISPAL ENDP8086CPU指令系統(tǒng)(2)第22頁3.11子程序調(diào)用返回指令CHANGPROCNEAR ;十六進制數(shù)變換成ASCII碼CMPAL,10JNGECHANG1ADDAL,7CHANG1:ADDAL,30HRETCHANGENDP8086CPU指令系統(tǒng)(2)第23頁3.11子程序調(diào)用返回指令能夠直接調(diào)用DISPAL實現(xiàn)顯示AX內(nèi)容,子程序DISPAX內(nèi)容以下:DISPAX PROCNEAR XCHGAL,AH CALLDISPAL XCHGAH,AL CALLDISPALRETDISPAXENDP8086CPU指令系統(tǒng)(2)第24頁3.11子程序調(diào)用返回指令作業(yè):8086CPU指令系統(tǒng)(2)第25頁3.12中止調(diào)用與返回指令計算機在程序運行過程中,因為發(fā)生了一些“緊急事件”,需要進行特殊處理(轉(zhuǎn)向中止服務(wù)子程序執(zhí)行),處理后返回到程序中止處繼續(xù)執(zhí)行,這種過程稱為中止處理過程。這里“緊急事件”能夠是由硬件產(chǎn)生,比如系統(tǒng)掉電、硬件故障、定時計數(shù)器溢出等;能夠是執(zhí)行指令產(chǎn)生,比如除法溢出等;還能夠是專門中止調(diào)用指令所產(chǎn)生。本節(jié)主要介紹專門中止調(diào)用指令、中止服務(wù)子程序結(jié)構(gòu)和中止返回指令。8086CPU指令系統(tǒng)(2)第26頁3.12中止調(diào)用與返回指令一、中止調(diào)用指令I(lǐng)NT中止調(diào)用指令I(lǐng)NT(Interrupt)格式為:

INT n這表示調(diào)用第n號中止,n為中止類型號,其值能夠是0~255。當(dāng)執(zhí)行該指令時,會進行以下操作:PSW、CS、IP入棧;去除IF、TF標(biāo)志;從中止向量表中取出中止向量(中止向量為中止服務(wù)子程序入口地址);轉(zhuǎn)到中止服務(wù)子程序進行執(zhí)行;中止服務(wù)子程序最終一條指令應(yīng)該是中止返回指令,執(zhí)行該指令能夠返回到程序中止處繼續(xù)執(zhí)行。8086CPU指令系統(tǒng)(2)第27頁3.12中止調(diào)用與返回指令二、中止返回指令I(lǐng)RET中止返回指令I(lǐng)RET(Interruptreturn)格式為:

IRET表示從中止服務(wù)子程序返回主程序。執(zhí)行該指令時,會完成IP、CS、PSW出棧操作,其次序與INTn指令入棧次序相反。因為修改了IP和CS內(nèi)容,從而實現(xiàn)程序返回功效。 8086CPU指令系統(tǒng)(2)第28頁3.12中止調(diào)用與返回指令三、中止向量表每個中止服務(wù)子程序入口地址(稱為中止向量)為32位(16位偏移地址和16位段地址),占用4個地址單元。計算機中采取最低1024個地址單元(稱為0頁)來存放中止向量,所以,n號中止中止向量存放地址為:4×n,調(diào)用該中止時,能夠從該地址取得中止服務(wù)子程序入口地址。8086CPU指令系統(tǒng)(2)第29頁3.12中止調(diào)用與返回指令四、中止服務(wù)子程序結(jié)構(gòu)因為中止是隨時可能調(diào)用程序,我們無法預(yù)知其調(diào)用位置,這

溫馨提示

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

最新文檔

評論

0/150

提交評論