




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二節8086/8088的指令系統8086/8088的指令系統中共有92種基本指令。可以分成6個功能組:1. 數據傳送(Datatransfer)2. 算術運算(Arithmetic)3. 邏輯運算和移位指令(Logic&Shift)4. 串操作(Stringmanipulation)5. 控制轉移(ControlTransfer)6. 處理器控制(ProcessorControl)1介紹指令系統使用的符號:八位寄存器:AH,AL,BH,BH,BL,CH,CL,DH,DL十六位通用寄存器:AX,BX,CX,DX,SP,BP,SI,DI堆棧指針 SP指令指針 IP(或PC)標志位 Flags目的和源變址寄存器 DI,SI段寄存器 CS,DS,ES,SS通用寄存器 rAL或AX(取決于操作數長度)acc28086/8088指令助記符表(自學)38086/8088指令助記符表(續)4
第二部分8086/8088指令系統一、數據傳送指令(Datatransfer)(一)通用傳送指令(GeneralPurposeTransfer)(二)輸入輸出指令(InputandOutput)(三)目的地址傳送指令(Address-objecttransfer)(四)標志傳送指令(Flagregistertransfer)5一. 數據傳送指令功能:負責把數據、地址或立即數傳送到寄存器或存儲單元。特點:它是計算機最基本、最重要的一種操作,使用比例最高。種類(分四種):
通用傳送指令包括:MOV,PUSH,POP,XCHG,XLAT。輸入輸出指令指令包括:IN,OUT。目的地址傳送指令包括:LEA,LDS,LES
標志傳送指令包括:LAHF,SAHF,PUSHF,POPF
除SAHF和POPF指令外,對標志位沒有影響。6(一)通用傳送指令(GeneralPurposeTransfer)8088提供方便靈活的通用的傳送操作,適用于大多數操作數。通用傳送指令(除了XCHG以外)是唯一允許以段寄存器為操作數指令。通用傳送指令包括: 1、MOV(Movement) 2、PUSH(Pushwordontostack) POP(Popwordoffstack)
3、XCHG(Exchange) 4、XLAT(Translate)71. MOV dest, src;(dest)(src) 目的 源 目的源功能:
把一個字節(B)或一個字(W)操作數由源傳送至目的。實現: 寄存器寄存器/存儲器之間; 立即數寄存器/存儲器 寄存器/存儲器段寄存器之間的數據傳送。8
具體說,通用數據傳送指令能實現:①CPU內部寄存器之間的數據的任意傳送
(除了碼段寄存器CS和指令指針IP以外)。
段寄存器之間不能傳送。例: MOVDL,CH ;8位寄存器8位寄存器 MOVAX,DX ;16位寄存器16位寄存器 MOVSI,BP MOVDS,BX ;通用寄存器段寄存器
MOVAX,CS ;段寄存器通用寄存器9立即數傳送至CPU內部通用寄存器組(AX、BX、CX、DX、BP、SP、SI、DI)。
用于給寄存器賦初值。
不能直接給段寄存器賦值例:
MOVCL,04H ;立即數8位寄存器
MOVAX,03FFH ;立即數16位寄存器思考:為什么加WORDPTR,BYTEPTR?不加對嗎?
MOVWORDPTR[SI],057BH;立即數存儲器
MOVBYTEPTRMEM,5;立即數存儲器10CPU內部寄存器(除CS和IP外)
與存儲器(所有尋址方式)之間數據傳送。 可以實現一字節或一個字的傳送。
存儲單元之間不能直接傳送
例:
MOVMEM,AX ;累加器存儲器,直接尋址
MOVMEM,DS ;段寄存器存儲器,直接尋址
MOVDISP[BX],CX ;寄存器存儲器,變址尋址
MOVAX,DISP[SI]
;存儲器累加器,變址尋址
MOVDS,MEM
;存儲器段寄存器,直接尋址
MOVCX,DISP[BX][SI]
;存儲器累加器,相對基址加變址11
注意:(1)不能用一條MOV指令實現以下傳送。
存儲單元之間的傳送
MOVMEM2,MEM1錯。
MOVAX,MEM1 MOVMEM2,AX對。
立即數送段寄存器
例:MOVDS,2000H錯。MOVAX,2000 HMOVDS,AX對。12
段寄存器之間的傳送
MOVES,DS;錯
MOVAX,DS MOVES,AX;對。注意CS和IP的使用
CS和IP不能作為目標操作數,CS可以作為源操作數。例: MOVCS,AX;錯
MOVAX,CS;對。
MOVIP,AX;錯
MOVAX,IP;對。13(2)段地址的默認 BX、SI、DI間址默認段地址為DS, BP間址默認段地址SS。(3) 凡是遇到給SS賦值指令,系統自動禁止外部中斷,執行本條指令和下條指令,恢復對SS寄存器賦值前的中斷開放情況。 這樣做為了允許程序員連續用兩條指令分別對SS和SP寄存器賦值,同時又防止堆棧空間變動過程出現中斷。 *在修改SS和SP的指令之間不要插入其他指令。(4) 所有通用傳送指令不影響標志位 (除SAHF、POPF以外)。14
MOV指令應用例:實現將AREA1開始的100個數據傳送到AREA2開始的單元。……AREA1:AREA2:100個數據15分析題意:
①可以用200條MOV指令來完成100個數據傳送,指令操作重復,每個數據傳送后的地址是變化的。②可以利用循環, 但每循環一次要修改地址(源地址和目的地址),必須把地址放在寄存器當中,用寄存器間接尋址來尋找操作數.16得到如下程序:
…
MOVSI,OFFSETAREA1 MOVDI,OFFSETAREA2 MOVCX,100AGAIN: MOVAL,[SI] MOV[DI],AL
INCSI ;修改地址指針 INCDI ;修改地址指針 DECCX ;修改個數 JNZAGAIN
…17
MOV指令的字節數、時鐘周期數、CPU與內存間傳送次數字節例時鐘數M傳送到CPU次數MOV指令操作數AXMMAX10(14)13MOVCOUNT[DI],AXRR10(14)13MOVAX,TEMP22MOVDS,BXMRRM8(12)+EA12~4MOVBP,STAK_TOP9(13)+EA12~4MOVCOUNT[BX][SI],CXimR(段寄存器除外)42~3MOVCL,2imM10(14)+EA13~6MOVwordptr[BP],5HR段R16(CS、IP除外)22MOVES,CXMOVBP,SSMR段R段M8(12)+EA12~4MOVDS,SEG_BASE9(13)+EA12~4MOV[BX]SEG_SAN,CS18表中:(1)時鐘數——執行指令所需的時鐘周期數, 直接決定了指令的執行時間。時鐘數決定因素:
決定于是字節操作還是字操作;
若是內存操作數,決定于尋址方式
(還要加上內存操作數的尋址時間)。表中b()的含義:
b--字節操作時鐘數()--字操作時鐘數19計算EA需要的時鐘數:如下表所示: (若段超越,再加兩個時鐘周期)20(2)指令字節數:
指令字節數與尋址方式有關。通常操作碼占二個字節;立即尋址:立即數增加1-2個字節數;操作數在內存中:
直接尋址:直接地址為1-2個字節,總的指令長3-4個字節;寄存器間接尋址(沒有位移量):2個字節;變址尋址或者相對基址加變址:都有1-2字節的位移量, 指令字節數為2-4個字節。21(3)傳送次數: 指執行指令時,內存與CPU之間數據傳送的次數。凡是立即數→寄存器或寄存器之間的傳送無此傳送數。凡是寄存器與存儲器之間傳送次數為1。222.PUSH(Pushwordontostack)POP(Popwordoffstack)這是兩條堆棧操作指令。(1)先介紹一下什么是堆棧,為什么需要堆棧 堆棧——按照先進后出原則組織的一段內存區域,特點:下推式的(規定堆棧設置在堆棧段內)改變SP的內容,
隨著推入堆棧內容增加,SP的值減少。先進后出工作原則(LastInFirstOut簡稱LIFO)
堆棧在內存中的情況:
23堆棧在內存中的情況:可以用一條立即數傳送指令給SP賦值,確定SP在SS段中的初始位置。例:設:(SS)=9000H,堆棧段為64KBMOVSP,0E200H ;(SP)=0E200H則:整個堆棧段的物理地址范圍為:
90000H~9FFFFH
棧頂的物理地址為:9E200H堆棧在內存中的情況如右圖所示:堆棧在內存中的情況24堆棧用途:
存放CPU寄存器或存儲器中暫時不使用的數據,使用數據時將其彈出;調用子程序,響應中斷時都要用到堆棧。調用子程序(或過程)或發生中斷時要保護斷點的地址,子程序或中斷返回時恢復斷點。25主程序子程序:子程序:在一個實際程序中,有些操作要執行多次,把要 重復執行(subroutine)操作編為子程序。 也常把一些常用的操作標準化、通用化的子程序。主程序(Mainprogram)——往往要調用子程序或處理 中斷,暫停主程序,執行子程序或中斷服務程序。26調用子程序時需保留內容:①調用子程序:將下條指令地址即IP值保留下來 (8088中碼段寄存器CS和指令指針IP),才能保證子程序執行完后準確返回主程序繼續執行。②執行子程序時,通常用到內部寄存器,執行結果會影響 標志位,必須在調用子程序之前將現狀保護起來。③子程序嵌套或子程序遞歸(自調自)保留許多信息,而且保證正確返回(且后進先出)。
后保留先取出原則(即LIFO-LASTInFirstout)。27注意:SP——堆棧指針,始終指向棧頂。 SP初值用MOVSP,im來設定。下邊詳細說明一下堆棧用途:28存放CPU寄存器或存儲器中暫時不使用的數據,
使用數據時將其彈出:
PUSHAX ;將(AX)入棧(AX)(AX)29使用數據時將其彈出: POPBX30調用子程序(或過程)或發生中斷時要保護斷點的地址,子程序或中斷返回時恢復斷點。子程序嵌套斷點地址壓入和彈出情況31(2)堆棧操作指令(堆棧操作指令有兩條):
入棧指令 格式:PUSHsrc ;(SP)(SP)-2 ((SP)+1,(SP))(src)
把一個字從源操作數由SP指向堆棧頂部。 操作如:PUSHAX出棧指令 格式:POPdest ; (dest)((SP)+1,(SP)) (SP)(SP)+2把現行SP所指向堆棧頂部的一個字指定的目的操作數,同時進行修改堆棧指針的操作。 操作如:POPBX32應用時注意:堆棧操作都按字操作。
PUSH,POP指令的操作數可能有三種:寄存器(通用寄存器,地址指針,變址寄存器),段寄存器(CS除外,PUSHCS合法,POPCS非法),存儲器。
執行PUSH指令,(SP)-2(SP),
低字節放在低地址,高字節放在高地址。 隨著推入堆棧內容增加,堆棧就擴展,SP的值減少, 但SP總是指向棧頂,堆棧工作原則后進先出。
PUSH,POP指令應該成對使用,保持堆棧原有狀態。堆棧最大容量即為SP的初值與SS之間的差。33堆棧應用舉例:
例:用BP的基址指令代替POP指令 …MOVBP,SPPUSHAXPUSHBXPUSHCX …MOVCX,[BP-6]
MOVBX,[BP-4]MOVAX,[BP-2] …ADDSP,6例:壓入堆棧的內容與彈出內容順序相反…PUSH AXPUSHBXPUSHCX…POPCXPOPBXPOPAX 343、交換指令(Exchange)格式:XCHGdest,src ;(dest)(src)執行操作:
把一個字節或一個字的源操作數與目的操作數相交換。可以實現:寄存器之間 寄存器和存儲器之間注意:
存儲器之間不能交換,兩個操作數中必須有一個在寄存器中;段寄存器不能作為一個操作數;允許字或字節操作,不影響標志位。35應用舉例:
XCHGBL,DL XCHGAX,SI XCHGCOUNT[DI],AX
XCHG[BX],[DI] (錯) XCHGDS,AX(錯)36XLAT(Translate)換碼指令:該指令不影響標志位。格式:XLATstr_table
;(AL)←((BX)+(AL))
或XLAT
str_table——表格符號地址(首地址), 只是為了提高可讀性而設置,匯編時仍用BX。
37XLAT指令使用方法:先建立一個字節表格;
表格首偏移地址存入BX;
需要轉換代碼的序號(相對與表格首地址位移量)存入AL;(表中第一個元素的序號為0)
執行XLAT指令后,表中指定序號的元素存于AL中。
(AL)為轉換的代碼。38XLAT指令應用:若把字符的掃描碼轉換成ASCII碼;或數字0~9轉換成7段數碼所需要的相應代碼(字形碼)等就要用XLAT指令。例:內存的數據段中有一張十六進制數字的ASCII碼表。
首地址為:Hex_table,欲查出表中第10個元素(‘A’)39執行指令序列:MOVBX,OFFSETHex_tableMOVAL,0AHXLATHex_table假設: (DS)=F000H, Hex_table=0040H (AL)=0AH執行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進制數的ASCII碼表40(二)輸入輸出指令(InputandOutput)輸入輸出指令共兩條:
1、IN(Inputbyteorword)
2、OUT(Outputbyteorword)
輸入指令用于CPU從外設端口接受數據,
輸出指令用于CPU向外設端口發送數據。無論接受還是發送數據,必須通過累加器AX(字)或AL(字節),又稱累加器專用傳送指令。
輸入、輸出指令不影響標志位。41每個外設要占幾個端口:數據口,狀態口和控制口。42信息交換要通過端口,在IBMPC機里,可以配接許多外部設備,每個外設與CPU之間交換數據,狀態信息和控制命令,每一種信息交換都要通過一個端口來進行。端口數:外部設備最多有65536個I/O端口。 A0~A15譯碼形成。端口號:端口號(即外設端口地址)為0000H~FFFFH。PC機僅使用A0~A9譯碼形成I/O口地址,即1024H個口地址 端口號:0000H~03FFH其中:A9=1,表示擴充槽上的口地址。43長格式:端口號中前256個端口(0~FFH),可以直接寫在指令中,這就是長格式。端口號代替指令中的PORT,機器指令用二字節表示,第二字節就是端口號。短格式:當端口號≥256時,只能使用短格式,必須先把端口號放到DX寄存器中。不需要用任何段寄存器來修改它的值。441、IN(Inputbyteorword)輸入指令格式:INacc,port;(acc)(port)具體形式有四種: INAL,data8;端口地址8位,輸入一個字節 INAX,data16;端口地址16位,輸入一個字 INAL,DX ;端口地址16位,輸入一個字節 INAX,DX ;端口地址16位,輸入一個字必須通過累加器AX(字)或AL(節)輸入數據。452、OUT(Outputbyteorword)輸出指令格式:OUTport,acc ;(port)(acc)具體形式有四種:OUTdata8,AL;端口地址8位,輸出一個字節 OUTdata16,AX;端口地址16位,輸出一個字 OUTDX,AL;端口地址16位,輸出一個字節OUTDX,AX;端口地址16位,輸出一個字必須通過累加器AX(字)或AL(節)輸出數據。46例1:實現(29H)(28H)→(DATA_WORD) INAX,28H MOVDATA_WORD,AX例2:從端口3FCH送一個字到AX寄存器 MOVDX,3FCH INAX,DX;(AL)←(3FCH), (AH)←(3FDH)
例3:實現將(AL)→(05H) OUT5,AL;(05H)←(AL)47(三)目的地址傳送指令(Address-objecttransfer)8086/8088提供三條:
地址指針寫入指定寄存器或寄存器對指令。 1、LEA(LoadEffectiveAddress) 2、LDS(LoadpointerusingDS) 3、LES(LoadpointerusingES)481、LEA(LoadEffectiveAddress)格式:LEAreg16,mem16;EA(reg16)功能:加載有效地址,用于寫近地址指針。把指令中指定的存儲器操作數有效地址裝入指定的寄存器。例:設(BX)=0400H,(SI)=003CH LEABX,[BX+SI+0F62H]執行指令后:EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EH49注意:設 (DS)=3000H BUFFER=1000H (31000H)=0040H(1)LEA指令與MOV的區別 LEABX,BUFFER;(BX)=1000H MOVBX,BUFFER;(BX)=0040HLEA指令與MOV等價 LEABX,BUFFER ;(BX)=1000H MOVBX,OFFSETBUFFER;(BX)=1000H50(2)LEA指令中的目標寄存器必須是16位的通用寄存器,
源操作數必須是一個存儲器。(3)請思考下列指令的正、誤 LEADX,BETA[BX][SI] LEADX,AX512、LDS(LoadpointerusingDS)格式:LDSreg16,mem32 ;(reg16)←(EA) (DS)←((EA)+2))功能:將指令指定32位地址指針送指令指定寄存器和DS。將指令指定mem32單元的前兩個單元內容(16位偏移量)裝入指定通用寄存器,把后兩個單元內容(段地址)裝入到DS段寄存器。用于寫遠地址指針。52例:假設:(DS)=C000H指令: LDSSI,[0010H]執行指令后:(SI)=0180H(DS)=2000H
533、LES(LoadpointerusingES)格式:LESreg16,mem32 ;(reg16)←(EA) (ES)←((EA)+2))功能:把源操作數指定的4個相繼字節送指令指定的寄存器 及ES寄存器中。此指令常常指定DI寄存器。將指令指定mem32單元的前兩個單元內容(16位偏移量)裝入指定通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年生物農藥及生物防治產品項目發展計劃
- 重構框架2025年計算機二級考試試題及答案
- 2025年不銹鋼棒材項目發展計劃
- 冷軋卷材企業數字化轉型與智慧升級戰略研究報告
- 番茄醬加工機械企業數字化轉型與智慧升級戰略研究報告
- 組裝童車企業數字化轉型與智慧升級戰略研究報告
- 電氣土壤加熱器企業縣域市場拓展與下沉戰略研究報告
- 箱式烤爐企業數字化轉型與智慧升級戰略研究報告
- 吸污機企業縣域市場拓展與下沉戰略研究報告
- 電磁調速電牽引采煤機企業縣域市場拓展與下沉戰略研究報告
- 2024年考研(英語一)真題及參考答案
- 《名片設計教程》課件
- 醫院培訓課件:《醫患溝通技巧》
- 綠色節能液冷數據中心白皮書 2023
- 手機支架供貨合同模板
- 金價走勢分析
- 人教版物理中考復習專題突破一作圖專題練習含答案
- 2024年高考化學真題完全解讀(全國甲卷)
- 客服人員儀容儀表培訓
- 華師大版七年級數學上冊知識點
- 2024能源互聯網智慧電力云服務平臺建設規范及標準
評論
0/150
提交評論