微機(jī)原理教案7-1.ppt_第1頁
微機(jī)原理教案7-1.ppt_第2頁
微機(jī)原理教案7-1.ppt_第3頁
微機(jī)原理教案7-1.ppt_第4頁
微機(jī)原理教案7-1.ppt_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 六 講,8086/8088的指令系統(tǒng),指令系統(tǒng)概述,按照匯編指令格式劃分,指令有三種: 雙操作數(shù)指令:指令中指定兩個(gè)操作數(shù),其中一個(gè)是源操作數(shù)(SRC),另一個(gè)是目的操作數(shù)(DEST)。 單操作數(shù)指令:指令只需一個(gè)操作數(shù)。它既是源操作數(shù)( SRC ),也是目的操作數(shù)( DEST )。 無操作數(shù)指令:雖然指令本身未指明操作數(shù)在哪里,但是指令卻隱含指明操作數(shù)的地方。,指令系統(tǒng)概述,學(xué)習(xí)每一條指令應(yīng)該注意以下幾點(diǎn): 指令的格式和執(zhí)行的操作 允許的尋址方式 與標(biāo)志位的關(guān)系,指令系統(tǒng)概述,按照匯編指令功能劃分,8086的指令可以分成六大類: 數(shù)據(jù)傳送指令 算術(shù)運(yùn)算指令 位運(yùn)算指令 串操作指令 控制轉(zhuǎn)

2、移指令 處理器控制指令,數(shù)據(jù)傳送指令,指令類型,指令,指令功能,通用數(shù)據(jù)傳送,目標(biāo)地址傳送,標(biāo)志位傳送,I/O數(shù)據(jù)傳送,MOVd, s PUSH s POP d XCHG d, s XLAT,字節(jié)或字傳送 字壓入堆棧 字彈出堆棧 字節(jié)或字交換 字節(jié)翻譯(代碼轉(zhuǎn)換),LEAd, s LDSd, s LESd, s,裝入有效地址 裝入地址指針(用DS) 裝入地址指針(用ES),LAHF SAHF PUSHF POPF,將F低字節(jié)裝入AH寄存器 將AH內(nèi)容裝入F低字節(jié) 將F的內(nèi)容壓入堆棧 從堆棧中彈出一個(gè)字裝入F,IN累加器,端口 OUT端口,累加器,輸入字節(jié)或字 輸出字節(jié)或字,表一數(shù)據(jù)傳送指令列表

3、,通用數(shù)據(jù)傳送指令,有以下五條 MOV 把源操作數(shù)傳送到目的操作數(shù) PUSH指針上移,源操作數(shù)進(jìn)棧 POP 出棧到目的操作數(shù),指針下移 XCHG交換源,目的操作數(shù) XLAT代碼轉(zhuǎn)換,通用數(shù)據(jù)傳送指令,MOV 指令 基本格式和功能 指令格式: MOV dest,src 其中 dest 表示目的操作數(shù),src表示源操作數(shù) 執(zhí)行的操作: (dest)(src) 與標(biāo)志的關(guān)系: 與標(biāo)志沒有關(guān)系,不影響標(biāo)志位。,通用數(shù)據(jù)傳送指令,MOV 指令 數(shù)據(jù)傳送通道,圖1 MOV 指令數(shù)據(jù)傳送通道,通用數(shù)據(jù)傳送指令,MOV 指令 一些說明 說明: 立即數(shù)不能直接傳給段寄存器;段寄存器之間也不能進(jìn)行直接傳送。(這2

4、種情況通常要通過通用寄存器間接進(jìn)行) DEST和SRC兩個(gè)操作數(shù)不能同時(shí)為存儲器操作數(shù);兩個(gè)存儲單元之間不能用一條MOV指令直接完成數(shù)據(jù)傳送。存儲器操作數(shù)可用任何一種存儲器尋址方式。 DEST和SRC長度須相同,即同時(shí)為字或字節(jié)。,通用數(shù)據(jù)傳送指令,MOV 指令 一些說明 說明 立即數(shù)只能出現(xiàn)在源操作數(shù)位置,不能作DEST CS只能作源操作數(shù),不能作目的操作數(shù)。 傳送實(shí)質(zhì)上是復(fù)制,對源操作數(shù)無影響。 16位數(shù)據(jù)的傳送遵循地址“高對高,低對低”的原則。這個(gè)原則不僅對MOV指令適用,對所有的傳送皆適用。,通用數(shù)據(jù)傳送指令,MOV 指令 例子 立即數(shù)r/m MOV CL, 05H MOV AX, 1

5、234H MOV ADDR, 12H MOV ADDR, 1234H,通用數(shù)據(jù)傳送指令,MOV 指令 例子 reg reg MOV DH, AL MOV DS, AX r m MOV DL, DA_BYTE MOV DL, SI MOV AX, DA_WORD,通用數(shù)據(jù)傳送指令,MOV 指令 例子 m m MOV DL, DA_BYTE1 MOV DA_BYTE2, DL m m(存儲單元內(nèi)容互換) MOV CL,DA_BYTE1 MOV DL,DA_BYTE2 MOV DA_BYTE1,DL MOV DA_BYTE2,CL,通用數(shù)據(jù)傳送指令,MOV 指令 例子 指令辯誤:判斷下列指令的正誤并

6、說明原因 MOV AL,CX MOV AL, CX MOV 3000H, BX MOV AL, 1200H MOV CS, BX MOV DS, 1200H MOV ES, DS,通用數(shù)據(jù)傳送指令,MOV 指令 練習(xí) 題目1:已知當(dāng)前BX=1200H,CS=1800H,IP=0500H,DS=3000H,則執(zhí)行指令MOV BX+2000H,12ABH 后,12ABH放在哪兩個(gè)存儲單元(物理地址)?,答案:12ABH放在33200H和33201H存儲單元中。其中12H放在33201H單元中,而0ABH放在33200單元中。,通用數(shù)據(jù)傳送指令,MOV 指令 練習(xí) 題目2:將DS段中2000H單元與

7、3000H單元的內(nèi)容互換,請寫出指令序列。 解:,MOV AL,2000H MOV BL, 3000H MOV 2000H, BL MOV 3000H, AL,通用數(shù)據(jù)傳送指令,PUSH 和 POP指令 基本格式和功能 指令格式: PUSH SRC POP DEST 執(zhí)行的操作: PUSH 壓入。源操作數(shù)進(jìn)棧至棧頂。“先減再壓” SP SP -2 SS:(SP),(SP)+1) (SRC) POP 彈出。棧頂出棧到目的操作數(shù)?!跋葟椩偌印?(DEST) SS:(SP),(SP)+1) SP SP +2,通用數(shù)據(jù)傳送指令,PUSH 和 POP指令 基本格式和功能 與標(biāo)志的關(guān)系: 與各標(biāo)志位無關(guān),

8、不影響標(biāo)志位 尋址方式: PUSH mem / reg POP mem / reg 注意: 操作數(shù)一律為16位操作數(shù)。允許使用段寄存器,但POP操作數(shù)不允許為CS。可以使用除立即數(shù)以外的任何數(shù)據(jù)尋址方式。,通用數(shù)據(jù)傳送指令,PUSH 和 POP指令 關(guān)于堆棧 堆棧是一段特殊組織的內(nèi)存區(qū)域,其內(nèi)容的存取主要由堆棧指針控制,規(guī)則是:“先進(jìn)后出”或者“后進(jìn)先出”。,XX,32H,30012H,30013H,30011H,30010H,3000FH,3000EH,30000H,3000H,SS,000FH,SP,6CH,45H,0AH,0013H,SP,堆棧段,通用數(shù)據(jù)傳送指令,PUSH 和 POP指

9、令 關(guān)于堆棧 例:將4456H壓入堆棧。,XX,30012H,30013H,30011H,30010H,3000FH,3000EH,30000H,3000H,SS,56H,堆棧段,44H,“先減再壓”,通用數(shù)據(jù)傳送指令,PUSH 和 POP指令 關(guān)于堆棧 例:從堆棧彈出兩個(gè)字節(jié)送AX。,XX,30012H,30013H,30011H,30010H,3000FH,3000EH,30000H,3000H,SS,56H,堆棧段,78H,12H,34H,34H,AX,12H,AH,AL,“先彈再加”,通用數(shù)據(jù)傳送指令,PUSH 和 POP指令 用途 堆棧常有兩個(gè)用途:暫存和傳送。 暫存: PUSH A

10、X PUSH BX POP BX POP AX 傳送: PUSH AX PUSH BX POP AX POP BX,XX,5A06H,AX,1200H,BX,sp,通用數(shù)據(jù)傳送指令,PUSH 和 POP指令 練習(xí) 題目:已知SS=2000H,AX=1600H,SP=0202H,CX=3456H,當(dāng)執(zhí)行以下兩條指令后: PUSH AX PUSH CX 問:這時(shí)SS,AX,CX,SP的內(nèi)容?存儲器中20200H單元的內(nèi)容為多少?,答案:SS=2000H,AX=1600H,CX=3456H ,SP=01FEH;(20200H)=00H,01FEH,01FFH,0200H,0201H,0202H,XX

11、,通用數(shù)據(jù)傳送指令,XCHG指令 基本格式和功能 指令格式: XCHG DEST, SRC 執(zhí)行的操作:源操作數(shù)與目的操作數(shù)內(nèi)容互換 (DEST) (SRC) 與標(biāo)志的關(guān)系: 與各標(biāo)志位互不影響,通用數(shù)據(jù)傳送指令,XCHG指令 基本格式和功能 尋址方式: XCHG mem/reg, mem/reg 注意:兩操作數(shù)均不允許為立即數(shù)和段寄存器,不能同為存儲器操作數(shù);可以是字或字節(jié)交換。,圖3 XCHG指令的數(shù)據(jù)交換通路,通用數(shù)據(jù)傳送指令,XCHG指令 例子 例:兩個(gè)存儲單元之間進(jìn)行數(shù)據(jù)交換。 (應(yīng)用三條指令實(shí)現(xiàn)),MOVAL,DABYTE1 XCHGAL,DABYTE2 XCHGAL,DABYTE

12、1,通用數(shù)據(jù)傳送指令,XLAT指令 基本格式和功能 指令格式: XLAT 或 XLAT AL, BX 執(zhí)行的操作: 其功能是從轉(zhuǎn)換表中找出一個(gè)字節(jié)的內(nèi)容,用其取代AL寄存器的內(nèi)容。 轉(zhuǎn)換表由用戶設(shè)計(jì),最長為256個(gè)字節(jié),換碼時(shí),應(yīng)將代碼表首地址保存在BX中, AL中保存待查字節(jié)序號(即代碼表中字符序號),換碼后,A L取得對應(yīng)的碼值。,通用數(shù)據(jù)傳送指令,XLAT指令 例子 例:假設(shè)用戶設(shè)計(jì)轉(zhuǎn)換表TABLE如下圖所示,如需要查找表中第8個(gè)單元的內(nèi)容,則可以使用指令序列:,MOVAX,SEGTABLE MOVDS,AX MOVBX,OFFSETTABLE MOVAL,07H XLAT,TABLE,

13、+1,+2,+3,+4,+5,+6,+7,+8,7EH,30H,6DH,79H,33H,5BH,1FH,70H,7FH,執(zhí)行后AL=70H,通用數(shù)據(jù)傳送指令,課堂練習(xí) 1、請將存儲器中DS段內(nèi)三個(gè)存儲單元的內(nèi)容輪換。(設(shè)3個(gè)存儲單元的偏移地址分別是1020H,1040H,1060H) 2、將CX與DX的內(nèi)容互換,可以有多少種方法?,通用數(shù)據(jù)傳送指令,參考答案 1、 MOV AL, 1020H XCHG AL, 1040H XCHG AL,1060H MOV 1020H, AL 2、至少有三種: 用MOV指令: 用堆棧指令: 用XCHG指令:,MOV AX, CX MOV CX, DX MOV

14、DX, AX,PUSH CX PUSH DX POP CX POP DX,XCHG CX, DX,目標(biāo)地址傳送指令,共3條 LEA 取有效地址 LDS 從雙字中取偏移地址和數(shù)據(jù)段的段地址 LES 從雙字中取偏移地址和附加段的段地址,目標(biāo)地址傳送指令,LEA指令 基本格式和功能 指令格式: LEA DEST, SRC 執(zhí)行的操作: 指令功能:源操作數(shù)的有效地址EA送給目的操作數(shù)。 DESTSRC的有效地址EA 與標(biāo)志的關(guān)系: 指令對標(biāo)志無影響。,目標(biāo)地址傳送指令,LEA指令 基本格式和功能 尋址方式: LEA reg, mem 說明: SRC必須是存儲器操作數(shù)。 DEST一定是一個(gè)16位通用寄存

15、器,而不能是8位的寄存器或段寄存器。 編程時(shí),程序員不必了解數(shù)據(jù)或指令的有效地址,但有時(shí)這些地址會在程序其它部分用到, 這時(shí)可以使用LEA 指令。,目標(biāo)地址傳送指令,LEA指令 例子 例:如BX=00CDH,SI=00A6H,存儲單元的內(nèi)容為78ABH,則指令 MOVAX,BXSI 執(zhí)行后,AX78ABH;而 LEAAX,BXSI 執(zhí)行后,AX00CDH00A6H=0173H。,目標(biāo)地址傳送指令,LDS和LES指令基本格式和功能 指令格式: LDS DEST, SRC LES DEST, SRC 執(zhí)行的操作: 功能:將SRC中的雙字內(nèi)容依次送入到DEST及DS(LDS指令)或ES(LES指令)

16、中。 指令中SRC為一雙字指針,高位字送指定的段寄存器,低位字送指定的寄存器。,目標(biāo)地址傳送指令,LDS和LES指令基本格式和功能 與標(biāo)志的關(guān)系: 指令對標(biāo)志無影響。 尋址方式: LDS/ LES reg, mem 說明: SRC處保存的一般是某個(gè)邏輯地址(SEG:OFFSET),事先由用戶準(zhǔn)備好。 DEST必須是任一通用寄存器(16位);SRC一定是存儲器操作數(shù)。 本指令用于同時(shí)建立段地址和段內(nèi)偏移地址。,目標(biāo)地址傳送指令,LDS和LES指令例子 例:設(shè)當(dāng)前DS2000H,DI2400H,存儲單元2340AH處的內(nèi)容如下圖所示。則指令 LDSSI,DI100AH 執(zhí)行后,DS與SI的值分別為

17、多少?,80H,01H,30H,22H,2340AH,答案:DS2230H, SI0180H,標(biāo)志位傳送指令,共有4條: LAHF 標(biāo)志送AH指令 SAHF AH送標(biāo)志指令 PUSHF 標(biāo)志進(jìn)棧指令 POPF 標(biāo)志出棧指令 這些指令用于保存和恢復(fù)PSW,標(biāo)志位傳送指令,LAHF 與 SAHF指令基本格式和功能 指令格式: LAHF SAHF 功能: LAHF:AH FlagsL SAHF:FlagsL AH,標(biāo)志位傳送指令,LAHF 與 SAHF指令基本格式和功能 說明: LAHF指令對F本身無影響; SAHF指令對F高8位無影響,對F低8位的影響要看AH的內(nèi)容。 復(fù)習(xí):F標(biāo)志寄存器各位位置,

18、OF,DF,IF,TF,SF,ZF,AF,PF,CF,15,0,8,7,標(biāo)志位傳送指令,LAHF 與 SAHF指令例子 例:欲將F中的進(jìn)位標(biāo)志和奇偶標(biāo)志都設(shè)置為1,請寫出指令序列。,答案: MOVAH,05H SAHF,標(biāo)志位傳送指令,PUSHF 與 POPF指令基本格式和功能 指令格式: PUSHF POPF 功能: PUSHF:stack Flags (F進(jìn)棧) POPF :Flags stack (F出棧),標(biāo)志位傳送指令,PUSHF 與 POPF指令基本格式和功能 說明: PUSHF指令對F本身無影響。 POPF指令對F的影響由棧頂內(nèi)容決定。 Flags中各標(biāo)志位的值只有少數(shù)幾個(gè)能通過

19、別的指令去設(shè)置,其余的只能通過上述4條指令去設(shè)置。,標(biāo)志位傳送指令,PUSHF 與 POPF指令例子 例1:欲將F的內(nèi)容傳送到AX中。請寫出指令序列。,答案:PUSHF POP AX,標(biāo)志位傳送指令,PUSHF 與 POPF指令例子 例2:欲設(shè)置F寄存器的內(nèi)容為1234H。請寫出指令序列。,答案: PUSH 1234H POPF,正確答案: MOV AX,1234H PUSH AX POPF,指令有誤,I/O數(shù)據(jù)傳送指令,IN 和 OUT指令 基本格式和功能 指令格式: 長格式(直接尋址): IN AL,端口地址 IN AX, 端口地址 OUT 端口地址,AL OUT 端口地址,AX 注意: 長格式中直接采用端口地址,但地址必須是8位的,也就是00FFH號端口才可以

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論