第六章-指令系統(tǒng)2014_第1頁
第六章-指令系統(tǒng)2014_第2頁
第六章-指令系統(tǒng)2014_第3頁
第六章-指令系統(tǒng)2014_第4頁
第六章-指令系統(tǒng)2014_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

苗清影qymiao@80X86微處理器的指令系統(tǒng)格式:XCHGdest,src; (dest)(src)執(zhí)行操作:把一個字節(jié)或一個字的源操作數(shù)與目的操作數(shù)相交換。可以實現(xiàn):寄存器之間,寄存器和存儲器之間注意:存儲器之間不能交換,兩個操作數(shù)中必須有一個在寄存器;段寄存器不能作為一個操作數(shù);允許字或字節(jié)操作,不影響標志位。交換指令(Exchange) XCHGBL,DL XCHGAX,SI XCHGCOUNT[DI],AX XCHG[BX],[DI] XCHGDS,AX應用實例例一:BL=88H,CL=17H,AX=2500H,DX=0100H XCHGAX,DX XCHGBL,CL DX=? CL=?例二:BX=6F30H,BP=0200H,SI=0046H,SS=2FOOH, (2F246H)=4154H XCHGBX,[BP+SI] BX=? (2F246H)=?結果為:AX=0100H DX=2500H CL=88HBX=4154H (2F246H)=6F30H應用實例格式:XLATstr_table;(AL)←((BX)+(AL))

或XLAT str_table—表格符號地址(首地址),只是為了提高可讀性而設置,匯編時仍用BX。

XLAT換碼指令

先建立一個字節(jié)表格;表格首偏移地址存入BX;需要轉換代碼的序號(相對與表格首地址位移量)存入 AL;表中第一個元素的序號為0)執(zhí)行XLAT指令后,表中指定序號的元素存于AL中。

(AL)為轉換的代碼。XLAT換碼指令若把字符的掃描碼轉換成ASCII碼;或數(shù)字0~9轉換成7段數(shù)碼所需要的相應代碼(字形碼)等就要用XLAT指令。例:內(nèi)存的數(shù)據(jù)段中有一張十六進制數(shù)字的ASCII碼表。

首地址為:Hex_table,欲查出表中第10個元素(‘A’)。XLAT指令實例執(zhí)行指令序列:MOVBX,OFFSETHex_tableMOVAL,0AHXLATHex_table假設:(DS)=F000H,

Hex_table=0040H (AL)=0AH執(zhí)行XLAT以后:(AL)=41H=(F004AH), 即“A”的ASCII碼。30H31H32H...39H41H42H...46H...Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FH'F''B''A''9''1''2''0'16進制數(shù)的ASCII碼表XLAT指令實例例:

BX=4040H, AL=0AH, DS=F000A, (F404AH)=20H XLAT AL=?

物理地址=?答案:

AL=20H

物理地址=F0000H+4040H+0AH=F404AHXLAT指令實例1、IN(Inputbyteorword)2、OUT(Outputbyteorword)

輸入指令用于CPU從外設端口接受數(shù)據(jù),輸出指令用于CPU向外設端口發(fā)送數(shù)據(jù)。無論接受還是發(fā)送數(shù)據(jù),必須通過累加器AX或AL,又稱累加器專用傳送指令。輸入、輸出指令不影響標志位。輸入輸出指令每個外設要占幾個端口:數(shù)據(jù)口,狀態(tài)口和控制口。輸入輸出指令信息交換要通過端口在IBMPC機里,可以配接許多外部設備,每個外設與CPU之間交換數(shù)據(jù),狀態(tài)信息和控制命令,每一種信息交換都要通過一個端口來進行。端口數(shù):外部設備最多有65536個I/O端口。A0~A15譯碼形成。端口號:端口號(即外設端口地址)為0000H~FFFFH。PC機僅使用A0~A9譯碼形成I/O口地址,即1024H個口地址,端口號:0000H~03FFH,其中:A9=1,表示擴充槽上的口地址。輸入輸出指令長格式:端口號中前256個端口(0~FFH),可以直接寫在指令中,這就是長格式。端口號代替指令中的PORT,機器指令用二字節(jié)表示,第二字節(jié)就是端口號。短格式:當端口號≥256時,只能使用短格式,必須先把端口號放到DX寄存器中。不需要用任何段寄存器來修改它的值。輸入輸出指令格式:INacc,port;(acc)(port)具體形式有四種:

INAL,data8;端口地址8位,輸入一個字節(jié)

INAX,data8;端口地址8位,輸入一個字

INAL,DX ;端口地址16位,輸入一個字節(jié)

INAX,DX ;端口地址16位,輸入一個字

必須通過累加器AX(字)或AL(節(jié))輸入數(shù)據(jù)。IN輸入指令格式:OUTport,acc;(port)(acc)具體形式有四種:OUTdata8,AL;端口地址8位,輸出一個字節(jié)OUTdata8,AX;端口地址8位,輸出一個字OUTDX,AL;

端口地址16位,輸出一個字節(jié)OUTDX,AX;

端口地址16位,輸出一個字必須通過累加器AX(字)或AL(節(jié))輸出數(shù)據(jù)。OUT輸出指令例1:實現(xiàn)(29H)(28H)→(DATA_WORD) INAX,28H MOVDATA_WORD,AX例2:從端口3FCH送一個字到AX寄存器

MOVDX,3FCH INAX,DX; (AL)←(3FCH),(AH)←(3FDH)

例3:實現(xiàn)將(AL)→(05H) OUT05H,AL;(05H)←(AL)應用舉例

地址指針寫入指定寄存器或寄存器對指令。

1、LEA(LoadEffectiveAddress) 2、LDS(LoadpointerusingDS) 3、LES(LoadpointerusingES)目的地址傳送指令格式:LEAreg16,mem16;EA(reg16)功能:加載有效地址,用于寫近地址指針。把指令中指定的存儲器操作數(shù)有效地址裝入指定的寄存器。例:設(BX)=0400H,(SI)=003CH LEABX,[BX+SI+0F62H]執(zhí)行指令后:EA= ? (BX)=?EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EHLEA(LoadEffectiveAddress)(DS)=3000H;BUFFER=1000H(31000H)=0040H1.LEA指令與MOV的區(qū)別LEABX,BUFFER;(BX)=1000HMOVBX,BUFFER;(BX)=0040HLEA指令與MOV等價LEABX,BUFFER;(BX)=1000HMOVBX,OFFSETBUFFER;(BX)=1000H2.LEA指令中的目標寄存器必須是16位的通用寄存器,源操作數(shù)必須是一個存儲器。應用舉例格式:LDSreg16,mem32;(reg16)←(EA) (DS)←((EA)+2))功能:將指令指定32位地址指針送指令指定寄存器和DS。將指令指定mem32單元的前兩個單元內(nèi)容(16位偏移量)裝入指定通用寄存器,把后兩個單元內(nèi)容(段地址)裝入到DS段寄存器。LDS(LoadpointerusingDS)假設:(DS)=C000H指令: LDSSI,[0010H]執(zhí)行指令后:(SI)=?(DS)=?

(SI)=0180H(DS)=2000H應用舉例假設:

(DS)=0110H (0110H)=0780H (01112H)=2090H指令: LDSSI,[0010H]

(SI)=? (DS)=?

執(zhí)行指令后:(SI)=0780H(DS)=2090H應用舉例格式:LESreg16,mem32;(reg16)←(EA) (ES)←((EA)+2))功能:把源操作數(shù)指定的4個相繼字節(jié)送指令指定的寄存器 及ES寄存器中。此指令常常指定DI寄存器。將指令指定mem32單元的前兩個單元內(nèi)容(16位偏移量)裝入指定通用寄存器,把后兩個單元內(nèi)容(段地址)裝入到ES段寄存器。LES(LoadpointerusingES)假設:

(DS)=B000H (BX)=080AH指令: LESDI,[BX]執(zhí)行指令后:(DI)=? (ES)=?(DI)=05A2H(ES)=4000H應用舉例(DS)=5000HTABLE=1000H分析下列指令執(zhí)行結果:

MOVBX,TABLEMOVBX,OFFSETTABLELEABX,TABLELESBX,TABLELDSBX,TABLE應用舉例(DS)=5000HTABLE=1000H指令執(zhí)行結果:

MOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLESBX,TABLE;(BX)=0040H,(ES)=3000HLDSBX,TABLE;(BX)=0040H,(DS)=3000H應用舉例采用了隱含寄存器(AH、Flags)操作數(shù)方式。8086有四條標志傳送操作指令:1.LAHF(LoadAHintoflags)2.SAHF(StoreAHintoflags)3.PUSHF(Pushflagsontostack)4.POPF(Popflagsoffstack)

標志傳送指令1.LAHF(LoadAHflags)格式:LAHF;(AH)←(PSW的低字節(jié))功能:標志寄存器低八位(AH)LAHF指令操作圖示意2.SAHF(StoreAHintoflags)

格式:SAHF;(PSW的低字節(jié))←(AH)

功能:(AH)送標志寄存器低八位。3.PUSHF(Pushflagsontostack)

格式:PUSHF;(SP)←(SP)-2 ((SP)+1,(SP))←(PSW)

功能:標志進棧。4.POPF(Popflagsoffstack)

格式:POPF;(PSW)←((SP)

溫馨提示

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

評論

0/150

提交評論