微機原理第3章-3學分_第1頁
微機原理第3章-3學分_第2頁
微機原理第3章-3學分_第3頁
微機原理第3章-3學分_第4頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第三章80486微處理器指令系統教學目標介紹80486的尋址方式及指令系統。學習要求場合以及常用指令的使用方法。講授內容第三章80486微處理器指令系統第一節80486微處理器尋址方第二節80486微處理器指令系第一節80486微處理器的尋址方式80X86的尋址方式可分為兩類:操作數的尋址方式和轉移地址的尋址方式。一、操作數尋址方式由于操作數作為指令的操作對象,可以存儲在存儲器中(稱為存儲器操作數)、寄存在寄存器中(稱為寄存器操作數)或直接包含在指令 中(稱為立即數),因此,與之對應有多種尋址方式。80X86粗略地劃 分可有3類10種尋址方式,其中訪問存儲器操作數有8種尋址方式。(1)立即數尋

2、址在這種尋址的方式下,操作數作為立即數直接存在指令中,可為 8位,16位和32位。例:MOVAX,1234HMOVBL,78HMOVECX,12345678H以第一條指令為例的立即數尋址方式的執行過程如圖。(2)寄存器尋址立即尋址示意圖在這種方式下,操作數存放在CPU某個8位、16位或32位寄存器中。例:MOVEAX,EDXINCCL MOV該尋址方式指令碼短,且無需從存儲器取操作數,故執行速度快(3)直接尋址在這種方式下,指令中的操作數部分直接給出了操作數的有效地址EA,它和操作碼一起放在存儲器的代碼段中,可以是16位或32位整數。但操作數一般在數據段DS中。例:MOVAX,DS:1000H

3、;將DS段中1000H和1001H單元的內容送到AX中。應注意的是,指令中的DS不能省略。(4)寄存器間接尋址MOVSI,1000HMOVAX,SI這種尋址方式下,操作數所在內存單元的EA由規定的寄存器指出。16位尋址時,EA可以由SI,DI,BP或BX提供。(其中BX、BP也稱基 址寄存器,SI、DI稱變址寄存器)若以SI,DI,BX間接尋址,則默認操作數在DS段中。若以BP間接尋址,則默認操作數在SS段中如果操作數不在上述規定的默認段,而是在其他的段,則必 須在指令中相應的操作數前加上段超越前綴。例如:MOVMOV(5)寄存器相對尋址方式MOVEAX,BX+24;也可以寫成MOVEAX,2

4、4BX MOVDX,EAX+1500;也可以寫成MOV(6)基址變址尋址方式MOVDX,BX+SI(7)相對基址變址尋址方式MOVDX,BX+SI+24(8)比例變址尋址方式MOVDX,變址寄存器比例因子+位移量其中比例因子可以是1,2,4,8中的任一個數。除ESP外的任何通用寄存器均可作變址寄存器,且EBP默認SS作段寄存器,其余以DS作段寄存器。這種尋址方式只適合于32位尋址的一種情況。存儲器尋址時的段約定訪存操作類型默認段寄存器允許超越的段寄存器偏移地址寄存器取指令代碼CS無(E)IP堆棧操作SS無(E)SP源串數據訪問DSCS,SS,ESFS,GS(E)SI目的串數據訪問ES無(E)D

5、I通用數據訪問DSCS,SS,ES,FS,GS偏移地址以(E)BP、(E)SP 間接尋址的指令SSCS,DS,ES,FS,GS偏移地址二、轉移地址尋址方式在指令系統中,有一組指令為程序轉移指令。程序轉移指令的尋 址方式涉及如何確定轉移的目標地址。目標地址可以在段內,也可以 在段外。 段內直接尋址轉移的目標地址是當前IP寄存器的內容和一個8位或16位位移量之和。 指令的匯編語言格式表示為:JMP NEAR PTR PROGRMJMP SHORT PTR OUTSET 段內間接尋址該方式中,轉移的目標地址是寄存器或存儲單元的內容。寄存器或 存儲單元的內容可以用數據尋址方式中除立即數以外的任何一種尋

6、址方 式取得,所得到的內容將用來取代IP寄存器的值。段內間接尋址轉移指令的匯編格式可以表示為: JMP CXJMP WORD PTR BX+TAB1 段間直接尋址這種尋址方式用于段間轉移,指令中直接提供了目標地址的段基址和偏移地址,所以,只要用指令中指定的偏移地址取代IP寄存器的內容, 用指令中指定的段基址取代CS寄存器的內容就完成了從一個段到另一個段的轉移操作。指令的匯編語言格式可表示為:JMPFARPTRNEXT 段間間接尋址該方式下,用存儲器中兩個相繼字的內容來取代IP和CS寄存器中的 原始內容,以達到段間轉移的目的。這里,存儲單元的地址是由指令指 定除立即數方式和寄存器方式以外的任何一

7、種數據尋址方式取得。指令的匯編語言格式可表示為:JMPDWORDPTRREL+BX第二節80486微處理器指令系統80X86的指令系統向上兼容,都是在8086指令的基礎上發展形成的。與80286相比,增加了32位操作和訪問存儲器的32位尋址方式。80486可以工作在實模式、保護模式和虛擬86模式,為了支持系統工作模式,指令系統中設計了系統管理指令、保護模式控制指令以及高級語言支持指令等等。80486的基本指令按功能可分為7類:數據傳送指令、算術運算指令、邏輯運算指令、字符串操作指令、控制轉移指令、處理器控制指令和按條件設置字節指令。下面分別給予介紹。一、數據傳送指令1)通用數據傳送指令:完成數

8、據的傳送工作,不影響任何標志基本傳送指令MOV格式:MOVOP1,OP2目的操作數源操作數功能:OP1OP2可完成:寄存器寄存器寄存器存儲器段寄存器寄存器段寄存器存儲器寄存器存儲器立即數注意:目的操作數不能是CS!交換指令XCHG格式:XCHGOP1,OP2功能:OP1OP2可完成:寄存器寄存器寄存器存儲例:XCHGAX,BX;AXBX地址傳送指令LEA傳送指令LEAREG,OP1功能:將OP1所在位置的有效地址(16位或32位) 送往寄存器(16位或32位)。例:LEABX,SEGPT例:LEABX,SEGPTMOVBX,OFFSETSEGPTDATASEGMENTSTRDB10,20,30

9、,40,50 RESDB10DUP(0) DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA START:MOVAX,DATAMOVDS,AXMOVES,AXLEALEA;SI=0;DI=5MOVAH,4CH;設置功能INT21H;返回DOSCODEENDSENDSTART查表轉換指令XLAT格式:XLAT;將(BX+AL)AL使用XLAT指令的條件:在數據段中建一張ASCII碼表表首地址的偏移量送BX待轉換數放入AL中例:將16進制數0F轉換為與之對應的ASCII碼AC-TABDBMOVBX,OFFSETMOVAL,SIXLAT;表首地址的偏移量

10、BX;取待轉換數;轉換結果AL2)堆棧指令壓棧/彈棧指令PUSH/POP格式:PUSHOP1;OP1可是16位或32位的寄存器、存儲器POP操作數或立即數I/O指令IN/OUT輸入格式:INOP1,OP2;OP1(OP2) 輸出格式:OUTOP1,OP2;(OP1)直接尋址的I/O指令INAL,9FHDX間址的I/O指令MOVDX,310HINAL,DX二、算術運算指令1)基本四則運算加/減法指令ADD/SUBADD SUBOP1,OP2;OP1OP1OP2例:ADDAL,BL;設AL=17H, BL=09H, CF=1, 則指令執行后AL= 20HBL= CF=SF=ZF=0帶進/借位加/減

11、法指令ADC/SBBADC SBBOP1,OP2;OP1OP1OP2CF例:ADCDL,BL;設DL=17H, BL=09H, CF=1, 則指令執行后DL= 21HBL=CF= SF=ZF=0OP1、OP2不能同時為存儲器操作數,OP1不能是立即數該類指令要影響所有狀態標志加1 /減1指令INC /DEC格式: INCDECOP1;OP1OP11該類指令不影響CF標志例:INCCX執行前:CX=1234H,CF=1;執行后:CX= 1235H CF=1求補指令NEG格式:NEGOP1;OP10(OP1)比較指令格式:CMPOP1,OP2;OP1 OP2例:完成14326545784322H9

12、8786765432322H運算DP1DBDB 65H,32H,14HLEASI,DP1;建指針MOVCX,7XORBL,BLDP2DBLEASI,DP1;建指針MOVCX,7XORBL,BLSUMDB8DUP(?)14 32 65 45 78 4322H98 78 67 65 43 2322H完成該7字節加法運算的程序段為:MOV AL,SI;取數ADC AL,SI+7 ; 相 加MOV SI+0EH,AL INCSI;修改指針LOOPAGAIN;循環ADCBL,0MOVSI+0EH,BL;存進位無符號數乘法指令MUL格式:MULOP1結果功能:AL (AX/EAX)OP1AX( DX:AX

13、 /EDX:EAX)如:MULSI;AXSIDX:AX例:試編制出實現Z=1288的程序段MOVMOVBL,8 MULBL該程序段執行后:AX=0400H帶符號數乘法指令IMUL(有三種形式):IMULOP1功能:AL (AX/EAX 結果AX( DX:AX/EDX:EAX)除法指令DIV/IDIV格式:DIVOP1IDIV功能:AX(DX:AX,EDX:EAX)OP1商AL(AX;EAX)余數AH(DX;EDX)若除數為0或商過大(超過保存商的累加器容量)時,產生0號中斷符號位擴展指令格式:CBW;字節字ALAXCWD;字雙字AXDX:AXCWDE ;字雙字AXEAXCDQ;雙字四字例:將變

14、量ONE除以TWO,結果存入BUFF單元,設ONE,TWO均為字型變量MOVAX,ONE;取被除數CWDIDIVTWO;擴充為32位MOVBUFF,AX;送商2)十進制調整指令指令格式及功能DAA、DAS組合BCD碼的加、減十進制調整指令,該指令僅對AL的內容進行調整,結果仍存于AL中。AAA、AAS分離BCD碼的加、減十進制調整指令,將AL中的內容調整后送AH、AL。AAM對兩個分離BCD碼的的乘積(在AX中)進行調整,結果存入AH、AL中(僅對無符號數有效)。AAD對進行DIV指令前的被除數(分離BCD形式存入AX中)的內容調整為二進制數,然后再進行后面的DIV指令,所得結果為十進制數。例

15、:MOVAL,08HADDDAA結果:AL=17H三、邏輯運算指令和移位指令1)邏輯運算指令邏輯與、或、異或、測試指令(AND、OR、XOR、TEST)格式:ANDXOROP1,OP2+OP2+OP1、OP2均可為寄存器、存儲器操作數,OP2也可是立即數。TESTOP1,OP2OP1只能是寄存器操作數,OP2同上。該類指令固定使OF、CF為0,且根據結果影響SF、ZF、PF狀態邏輯非指令NOT格式:NOTOP1;OP1OP1如: 若使AL中某8位二進制數的最低為零有指令:ANDAL,0FEH指令ORBL,55H執行后有:BL=1 1 11 B若想對DL中最高位求反有指令:XORDL,80HMO

16、VAL,35HANDAL,0FHMOVBL,AL;BL=05HMOVCL,09HORMOVBH,CL;BH=39H2)格式:算術左移SAL邏輯左移SHLOP1,OP2D7D7D00CFOP1可為8位、16位或32位的寄存器、存儲器操作數OP2為移位次數,可用立即數或CL表示。對于8086而言立即數的值不能超過1,80486最大可為31。右移指令格式:算術右移SARCFALCFALD0D7邏輯右移OP1,OP2SARAL,1D7D0D7D00CF循環左移指令ROL/RCL功能:ROL/RCLOP1,OP2D7DD7D0CF循環右移指令ROR/RCR格式:ROR/RCROP1,OP2D7D0CFD

17、7D0CFOP1可為8位、16位或32位的寄存器、存儲器操作數OP2為循環次數,可用立即數或CL表示。對于8086而言立即數的值不能超過1,80486最大可為31。說明:80486的移位次數不能大于31。8086用立即數作移位次數時只能是1,但用CL作移位次數時可移位255次。左移指令常用于實現乘以2n的操作,右移指令常用于實現除以2n的操作。操作數可以是8位、16位或32位的寄存器或存儲器操作數,移位次數可 以用立即數或CL寄存器的內容指明。例如:AX=0012H,BX=0034H,將兩寄存器的低8位組合形成AX=1234HMOVCL,8ROLAX,CLADDAX,BX四、控制轉移指令1)無

18、條件轉移指令JMP 格式:JMP功能:無條件地控制程序轉移到OP1所指定的目標地址。根據目標地址和轉移指令所在位置的關系,可分為以下幾種類型:短轉移(SHORT): 在段內的短距離(-128127)轉移。段內轉移(NEAR):目標地址與轉移指令都在同一段內。段間轉移(FAR): 目標地址與轉移指令分別位于不同的段內,轉移時CS和IP(EIP)中的值都要發生改變。 OP1可以是以下幾種情況:標號:可以進行段內和段間的轉移。寄存器操作數:只能進行段內轉移。存儲器操作數:可以進行段內和段間的轉移。JMPCX;CXIPJMPWORDPTRBX;BXIP的低8位BX+1IP 的高8位JMPDWORDPT

19、RBX;BXIP的低8位BX+1IP的高8位BX+2CS的低8BX+3CS的高82)條件轉移指令格式:JxxOP1功能:根據CPU中的標志位狀態組成的轉移條件xx,決定程序的執行 流向。若條件成立,則控制程序轉移到OP1所給出的目標地址; 若不成立,程序則順序執行。該類指令只能進行段內轉移,均不影響標志位。常用條件轉移指令無符號數條件轉移指令指令助記符轉移條件說明JCCF=1有進位轉移(與JB/JNAE重疊)JNCCF=0無進位轉移(與JAE/JNB重疊)JP/JPEPF=1校驗為偶轉移JP/JPOPF=0校驗為奇轉移JA/JNBECF=ZF=0高于/不低于或等于轉移JAE/JNBCF=0高于

20、或等于/不低于轉移JB/JNAECF=1低于/不高于或等于轉移JBE/JNACF=1或ZF=1低于或等于/不高于轉移JE/JZZF=1等于/為零轉移JNE/JNZZF=0不等于/非零轉移有符號數條件轉移指令指令助記符轉移條件說明JOOF=1溢出轉移JNOOF=0無溢出轉移JSSF=1為負數轉移JNSSF=0為正數轉移JG/JNLEZF=0且SF=OF大于/不小于或等于轉移JGE/JNLSF=OF大于或等于/不小于轉移JL/JNGESFOF小于/不大于或等于轉移JLE/JNGZF=1或SFOF小于或等于/不大于轉移JCXZ(CX)=0CX寄存器為零轉移轉移范圍在16位尋址方式下為64KB,32位

21、尋址方式下為4GB。例:根據加法運算的結果做不同的處理,如結果為 0 轉向 KK1,結果為 1轉向 KK2 執行。方法1:ADDAX,BXJZKK1;KK2處理程序KK1:方法2:ADDAX,BXJNZKK2;KK1處理程序KK2:循環控制轉移指令.格式:LOOPOP1(或LOOPDOP1)功能:將(E)CX-1CX,若(E)CX0,則轉移到標號OP1處執行。4)過程調用/返回指令CALL/RET過程定義偽指令PROC/ENDP格式:過程名PROC屬性;過程體RET;返回語過程名ENDP若過程與主程序在同一段中,則過程屬性為NEAR(即為近過程);若過程與主程序在不同段中,則過程屬性為FAR。

22、過程調用/返回指令CALL/RET格式:CALLOP1 功能:段內調SPSP-2,(SP+1、SP)IP;IPOP1所在位置的偏移量段間調用SPSP-2,(SP+1、SP)IP;SPSP-2,(SP+1、SP)CSIPOP1所在位置的偏移量,CSOP1所在位置的段基址格式:RET功能: 段內返回:IP(SP+1、SP),SPSP+2段間返回:IP(SP+1、SP),SPSP+2格式:RETCSn(SP+1、SP),SPSP+2功能:同RETSPSP+n說明: RET n稱為帶參數的返回指令,該參數n必須是立即數。返回時,堆棧指針除了加上彈出的返回地址的字節數以外,還要加上參數n所給出的立即數。

23、這個立即數必須是16位的偶數。 如果在執行RET指令之前,棧頂元素仍然是調用程序的斷點地址,則RET 指令執行后,能夠正確返回調用程序斷點,否則不能。 近過程和遠過程中的RET指令,格式相同,但匯編后生成的目標代碼不一樣,前者為C3H,后者為CBH。五、字符串操作指令1)基本字符串操作指令MOVSDSTR,SSTR;源區字符串目的區字符CMPSSSTR,DSTR;源區字符串目的區字符串SCASDSTR;AL(AX,EAX)目的區字符串各字符LODSSSTR;源區字符串字符AL(AX,EAX) STOSDSTR;AL(AX,EAX)的字符目的區INSDSTR;從DX指定的端口輸入一字符到目 的區

24、OUTSSSTR;將源區字符從DX根據字符串中元素的長度,以上指令分別有三種形式:2)字符串指令的有關問題指針及修改源串指針:ESI或SI,默認源串在DS所指的數據段,可利用段前綴 改變段基址來源。目的串指針:EDI或DI,默認目的串在ES所指的數據段,不能改變。指針的修改:DF=0,增址;DF=1,減址。STD指令使DF=1;CLD指令使DF=0。串長度的控制長度計數器是CX或ECX,串長度可達64KB或4GB。對標志的影響僅有CMPS、SCAS影響所有標志,其他指令不影響標志。MOVSB;(SI)SI1 SI DI1 DICMPSB;(SI)(DI) SI1 SI DI1 DISCASW;

25、AX (DI)DI2 DILODSW;(SI)SI2SI六、處理器控制指令單個標志位操作指令指令格式功能說明CLC清進位標志(CF0)STC置進位標志(CF1)CMC進位標志取反(CFCF)CLD清方向標志(DF0)DF=0使串指針向增加方向修改STD置方向標志(DF1)DF=1使串指針向減少方向修改CLI清中斷允許標志( IF0 )IF=0表示禁止可屏蔽中斷(關中斷)STI置中斷允許標志(IF1)IF=1表示允許可屏蔽中斷(開中斷)處理器暫停指令HLT功能:使程序停止運行,處理器進入暫停狀態,不執行任何操作,不影響標志。當RESET線上有復位信號、CPU響應非屏蔽中斷、CPU響應可屏蔽中斷3種情況之一時,CPU脫離暫停狀態,執行HLT的下一條指令。處理器脫離指令ESC功能:使CPU將控制權交給浮點協處理器FPU,使FPU可以接

溫馨提示

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

評論

0/150

提交評論