




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章80X86的尋址方式
及指令系統
3/19/20241.本章要點及各類指令的功能和用法80X86系統的各種尋址方式80X86的指令系統構成3/19/20242.定義:程序:讓計算機完成某種操作的命令,所有指令的集合稱為指令系統。指令用助記符表示,匯編語言程序經過編譯連接后,指令助記符轉換為二進制代碼,即指令代碼,或稱為機器碼,可以由CPU執行。指令代碼需要事先存放在微機系統的內部存儲器中由CS存放器中的內容所指定的代碼段中。3/19/20243.指令的一般格式:操作助記符目的操作數〔或其位置〕,源操作數〔或其位置〕dstsrc例如: MOV AX,[SI] 對應的機器碼是8BH,04H MOV AX,ES:[SI] 對應的機器碼是26H,8BH,04H3/19/20244.3.18086的尋址方式〔addressingmode〕尋址方式:指令中給出的操作數的表示〔或存放〕方式,如果操作數存放在存儲器中,CPU必須先計算出操作數的物理地址存放器間接尋址直接尋址存放器尋址隱含尋址基址變址相對尋址基址變址尋址存放器相對尋址立即尋址尋址方式3/19/20245.①立即尋址:操作數〔8位或16位〕出現在指令中,與指令代碼一起存放在存儲器的代碼段中。例:MOV AX,6000HMOVAH,60HMOVAL,00H3/19/20246.
②存放器尋址:操作數放在CPU內部的存放器中,可為8位或16位存放器,由指令給出。例:MOVAX,BXMOVAH,BH3/19/20247.③直接尋址:操作數放在存儲器的數據段〔其段地址由DS中的內容決定〕中,其有效地址〔偏移地址直接用偏〔位〕移量表示在指令中,占2個字節。偏移量常用disp表示,是有效地址的一局部或全部,可以8位也可以16位。例:MOV AX,DS:[0100H]3/19/20248.②存放器間接尋址:操作數在存儲單元中,其有效由BX﹑SI或DI中的內容給出表示為:(BX)EA=(SI)(DI)存放器BX﹑SI或DI在指令中給出。例:MOV AX,[SI]3/19/20249.⑤存放器相對尋址:操作數在存儲器中,其有效地址是位移量〔可8位或者16位〕與變址或基址存放器之和,Disp與存放器在指令中給出。例:MOVAX,5[BX]也可寫成MOVAX,[BX+5]3/19/202410.⑥基址變址尋址:操作數在存儲器中,偏移地址由基址寄存器和變址存放器中的內容相加確定。例:MOV AX,[BX][DI]3/19/202411.⑦基址變址相對尋址:存放器相對尋址與基址變址尋址方式的結合。disp與存放器均在指令中給出。例:MOVAX,5[BP][SI]3/19/202412.⑧隱含尋址:指令本身隱含了操作數的地址,例如:字符串操作指令 MOVS,源操作數由DS:SI存放器間接尋址,目的操作數由ES:DI存放器間接尋址。以各種類型訪問存儲器時,存儲單元地址的組成:3/19/202413.3.28086/8088的指令系統a,除SAHF外不影響標志位,SAHF是將AH內容送到標志存放器的低8位;b,不能用CS作為目的操作數;c,源操作數和目的操作數不能同時在存儲器中,即:不能在一條指令中實現數據在存儲器中的傳送。3.2.1數據傳送指令3/19/202414.Ⅰ.數據傳送,由源---?目的例:MOV AX,BX;存放器尋址MOV DL,AL;存放器尋址MOV AX,02;源操作數用立即尋址MOV SI,[BX];源操作數存放器間接尋址MOVAL,4[DI];源操作數用存放器相對尋址MOVAX,[BX+2];源操作數用存放器相對尋址MOV[BX][DI],DX;目的操作數用基址加變址尋址1、MOV指令:數據傳送〔復制〕3/19/202415.立即數、代碼段存放器CS只能作源操作數。IP存放器不能作源操作數或目的操作數。MOV指令不能在兩個存儲單元之間直接傳送數據,也不能在兩個段存放器之間直接傳送數據。兩個操作數的類型屬性要一致。本卷須知!3/19/202416.Ⅱ.堆棧操作指令:堆棧:是以后進先出規那么保存信息的一種存儲機構。〔1〕8086中堆棧段地址在SS存放器中,堆棧當前偏移地址在SP存放器中,SP稱為堆棧指針。SP的初值代表了堆棧區的大小,假設SP=0100H,有右圖所示:(2)堆棧操作方式:以字為單位進行操作,高字節在高地址,低字節在低地址。3/19/202417.(3)堆棧操作指令a、壓入指令:PUSH例:PUSH AX如果AX=1234H,那么該指令執行后的結果:SP=00FEH,〔00FFH〕=12H,〔00FEH〕=34Hb、彈出指令:POP例: POP BX3/19/202418.Ⅲ.字節或字交換指令:存放器之間或存放器與存儲器之間內容交換。XCHGOPR1,OPR2;〔OPR1〕〔OPR2〕例:xchgax,cx3/19/202419.Ⅳ.字節轉換指令:常用于查表。格式:XLAT[轉換表]即:XLAT ;(BX+AL)-
AL,BX的內容是表的首地址,AL的內容是表內的序號。采用隱含尋址方式。功能:將一個字節從一種代碼轉換成另一種代碼。XLAT指令是通過查表方式來完成翻譯功能的,因此,執行該指令之前,必須建立好一張翻譯表,該表的最大容量為256個字節。
3/19/202420.IN A,port ;數據從port端口輸入到AL或AXOUT port,A ;數據從AL或AX輸出到port端口1〕A是AL〔8位輸入輸出〕或AX〔16位輸入輸出〕2〕port是外設的端口地址,可以是8位立即數表示的直接地址,也可以用DX存放器的內容作為端口地址。例: IN AL,3FH MOV DX,3FH OUT DX,AX2、輸入輸出指令〔I/O指令〕3/19/202421.SAHFPUSHFPOPF標志送AH指令功能是:將標志存放器中的SF、ZF、AF、PF傳送至AH的指定位,空位沒有定義AH送標志位存放器低字節指令。影響標志位,但對OF、DF、IF無影響標志入棧指令修改堆棧指針不影響標志位標志出棧指令修改堆棧指針影響標志位3、地址目標傳送指令LEA3/19/202422.4、標志傳送指令標志送AH指令LAHFAH送標志寄存器低字節指令SAHF標志入棧指令PUSHF標志出棧指令POPF3/19/202423.3.2.2算術運算類指令1.加法與減法指令a,影響標志位b,只能有一個操作數在存儲器中c,目的操作數不能采用立即尋址方法ADD DST,SRC; DST?——DST+SRCADC DST,SRC; DST?——DST+SRC+CFSUB DST,SRC; DST?——DST-SRCSBB DST,SRC; DST?——DST-SRC-CFNEG DST ; DST?——0-DST,即取補3/19/202424.ADD AX,[SI];完成16位數據的加法運算;SRC在存儲器中;DST是CPU中的AX存放器例:SBB CX,DATA1;完成16位數據的減法運算;SRC在存儲器中;DST是CPU中的CX存放器例:3/19/202425.2.比較指令CMP DST,SRC;DST-SRC,結果不保存;只影響標志位例:CMP AX,BXa、作為無符號數時,比較后的大小由CF和ZF決定:ZF=1:那么AX=BXZF=0,CF=0:那么AX>BX ZF=0,CF=1:那么AX<BXb、作為帶符號數時,比較后的大小由SF、ZF和OF決定:ZF=1:那么AX=BX OF異或SF=0:那么AX≥BX OF異或SF=1:那么AX<BX3/19/202426.例: MOV AX,003AH; 0000000000111010 MOV BX,8003H; 1000000000000011 CMP AX,BX; 1000000000110111影響標志位:CF=1,OF=1,ZF=0,SF=1,PF=0,AF=0作為無符號數時,CF=1,那么AX<BX003AH小于8003H作為帶符號數時,OF異或SF=0,那么AX≥BX正數大于負數3/19/202427.3.增量減量指令影響除CF以外的所有狀態標志,只有一個操作數DST,可以是8位也可以是16位操作數。常用來修改計數器的計數指針。INC DST;DST+1——?DSTDECDST;DST-1——?DST例:INC AX;AX+1——?AX3/19/202428.4、乘法與除法指令只有一個操作數SRC,且不可以是立即數。IMULSRC;符號數的乘法;字節運算時,AL×SRC—?AX;字運算時,AX×SRC—?DX與AXMULSRC;無符號數的乘法,其它同上IDIVSRC;符號數除法;字節運算時:AX÷SRC的商—?AL;AX÷SRC的余數—?AH;字運算時:DX:AX÷SRC的商—?AX;DX:AX÷SRC的余數—?DXDIVSRC;無符號數除法,其它同上3/19/202429.〔1〕乘法運算后,標志位的使用:CF=OF=1,說明結果為一個字或雙字。CF=OF=0,說明結果為一個字節或字,無符號數時,高字〔高字節〕全為0;符號數時,高字〔高字節〕僅是低字〔低字節〕的符號擴展〔2〕除法結果的標志位無意義。〔3〕除數為0或商溢出時,除法結果無意義,并引起溢出中斷。注意:3/19/202430.5,符號擴展指令CBW ;將AL中的字節數符號擴展成AX中的字.CWD ;將AX中的字符號擴展成DX與AX中的雙字.擴展時:正數擴0,負數擴1AL=85H,BX=0345H,求BX+AL的和執行 CBW ;85H是負數,得到AX=0FF85H ADD AX,BX;0FF85H+0345H=02CAH得到AX=02CAH例3/19/202431.6,BCD數調整指令操作數使用隱含尋址,且規定為AL或AX(1)針對組合BCD數組合BCD數的加法調整指令,半字節1位BCD相加,超過9或有進位,要加6調整,低半字節調整后有進位,高半字節再調整。表示為:假設AL&0FH>9或AF=1,那么AL+6AL,1AF 假設AL&0F0H>90H或CF=1,那么AL+60HAL,1CFDAA
①3/19/202432.(1)針對組合BCD數組合BCD數的減法調整指令,半字節1位BCD相減,有借位,要減6調整。表示為:假設AL&0FH>9或AF=1,那么AL-6AL,1AF假設AL>9FH或CF=1,那么AL-60HAL,1CF
DAS
②3/19/202433.(1)針對分離BCD數AAA別離BCD數的加法調整指令,只取低半字節,其余同組合BCD數。表示為:假設AL&0FH>9或AF=1,那么AL+6AL,AH+1AH,1AF;AFCF,AL&0FHAL(只取低4位)
①3/19/202434.(1)針對分離BCD數AAS別離BCD數的減法調整指令,只取低半字節,其余同組合BCD數。表示為: 假設AL&0FH>9或AF=1,那么AL-6AL,AH-1AH,1AF;AFCF, AL&0FHAL(只取低4位)②3/19/202435.(1)針對分離BCD數AAM別離BCD數的乘法調整指令,兩個BCD數相乘,結果在AL中,除以10后商在AH中,余數在AL中。表示為:AL/0AHAH(商)ALMOD0AHAL(余)③3/19/202436.(1)針對分離BCD數AAD別離BCD的除法調整指令,先將兩個BCD碼轉為一字節二進制(用高位*10+低位),得到被除數放于AL中,并把AH清零,運算后,商->AL,余數->AH表示為: AH*0AH+ALAL,0AH;先調整再做除法,商到AL中,余數到AH中。④3/19/202437.3.2.3位操作指令1、邏輯運算類指令:
參與運算的操作數可以是字節或字AND DST,SRC;DST∧SRC
DST,清CF、OF;根據結果置SF、ZF和PF,標志AF不定OR DST,SRC;DST∨SRC
DST,標志位設置同上XOR DST,SRC;DST異或SRC-
DST,標志位設置同上TESTDST,SRC;DST∧SRC,僅置標志位,標志位設置同上NOT DST ;DST中各位取反
DST,不影響標志位3/19/202438.OR CL,03H;置位CL的D0、D1AND AL,0F5H;清AL的D1、D3XOR AH,0FH; AH的低半字節取反TESTAL,02H;判斷AL的D1是否為0,;是,ZF=1,否那么,ZF=0XOR AL,TEST_CODE;當AL與TEST_CODE相同時,ZF=1,否那么,ZF=0邏輯運算指令經常用來對存放器或存儲單元的某些位進行置位〔1〕或者清零〔0〕的操作。例:3/19/202439.2、移位指令:
按位進行從左到右或從右到左的移位。以下CNT表示移位的次數。SHR DST,CNT;邏輯右移SHL/SALDST,CNT;邏輯/算術左移SAR DST,CNT;算術右移3/19/202440.3、循環移位指令:ROR DST,CNT; 循環右移ROL DST,CNT; 循環左移RCRDST,CNT; 帶進位循環右移RCLDST,CNT; 帶進位循環左移a,移位指令影響AF外的各狀態標志位.b,循環移位指令只影響CF、OFc,CNT可以為立即數1或者存放器CL(預先設置移位次數):當CNT=1時,OF=0表示移位前后DST的最高位相同,OF=1,表示不同;當CNT>1時,OF無意義.3/19/202441.〔1〕串傳送:〔DS:SI〕--?〔ES:DI〕,隱含尋址,不影響標志位。MOVSW ;字傳送:SI±2—?SI,DI±2—?DIMOVSB ;字節傳送:SI±1—?SI,DI±1—?DI〔2〕串比較:〔DS:SI〕-〔ES:DI〕,隱含尋址,僅影響標志位。CMPSW ;字比較:SI±2—?SI,DI±2—?DICMPSB ;字節比較:SI±1—?SI,DI±1—?DI〔3〕串掃描:隱含尋址,僅影響標志位。SCASW;字掃描:AX-〔ES:DI〕,DI±2—?DISCASB;字節掃描:AL-〔ES:DI〕,DI±1—?DI3.2.4串操作指令與重復前綴3/19/202442.〔4〕串取出:隱含尋址,不影響標志位。LODSW;字取出:〔DS:SI〕-?AX,SI±2-?SILODSB;字節取出:〔DS:SI〕-?AL,SI±1-?SI〔5〕串存儲:隱含尋址,不影響標志位。STOSW;字存儲:AX—?〔ES:DI〕,DI±2—?DISTOSB;字節存儲:AL—?〔ES:DI〕,DI±1—?DI3/19/202443.6、串操作可以加重復前綴使得其連續執行屢次REPMINST;當CX≠0時,重復執行MINST,且CX-1—?CX;MINST是MOVS或STOS指令REPE/REPZCINST;當CX≠0且ZF=1時,重復執行CINST;且CX-1—?CX,CINST是CMPS或SCASREPNE/REPNZ CINST;當CX≠0且ZF=0時,重復執行CINST; 且CX-1-?CX,CINST是CMPS或SCAS3/19/202444.串操作類指令可以與重復前綴配合使用,從而操作得以重復執行,并在條件符合時停止執行。無LODSREPE/REPZREPNE/REPNZ
SCASREPE/REPZREPNE/REPNZ
CMPSREPMOVS可添加的重復前綴
REP
STOS
串操作指令
3/19/202445.轉移類指令可以改變代碼段存放器CS與指令指針IP的值或僅改變IP的值,從而可以以改變指令執行的順序,以滿足程序分支或跳轉的需要。3.2.5控制轉移指令1.無條件轉移、調用和返回指令〔1〕無條件轉移指令JMP格式:JMPOPRD;OPRD是轉移的目的地址功能:轉移到目的地址所指示的指令去執行。3/19/202446.直接轉移短程轉移近程轉移遠程轉移JMPSHORTOPRD;IP=IP+8位位移量,目的地址與JMP指令所處地址的距離在-128~127范圍之內。近程轉移:JMPNEARPTROPRDIP=IP+16位位移量,NEAR可省略,目的地址與JMP指令處于同一地址段范圍之內。JMPFARPTROPRDIP=OPRD的段內位移量CS=OPRD所在段地址。直接轉移的3種形式:
3/19/202447.間接轉移指令的目的地址可以由存儲器或存放器給出,有以下2種形式:①段內間接轉移:JMPWORDPTROPRD;IP=[EA]〔由OPRD的尋址方式確定〕例如:JMPWORDPTR[BX];IP=[DS×16+BX]JMPWORDPTRBX;IP=BX②段間間接轉移:JMPDWORDPTROPRD;IP=[EA],CS=[EA+2]該指令指定的雙字節地址指針的第一個字單元內容送IP,第二個字單元內容送CS。例如:JMPDWORDPTR[BX+SI]3/19/202448.〔2〕調用和返回功能:調用CALL指令用來調用一個過程或子程序。調用指令格式如下:①段內調用:CALLNEARPTROPRD操作:SP=SP-2,〔SP+1,SP〕=IP,IP=IP+16位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 27432-2025實驗室遠程評審技術規范
- 2025年茶藝師興趣小組活動試題及答案
- 2025婦幼保健員考試挑戰應對試題及答案
- 婦幼保健員考試常見準備材料試題及答案
- 掌握婦幼保健員考試試題及答案技巧
- 2025年度貨車買賣及車輛安全性能提升合同
- 二零二五年度城市應急車輛雇傭司機合同
- 2025年度車位使用權附贈房東房屋租賃合同
- 2025年度酒店退房押金退還協議
- 二零二五年度廣告傳媒行業營銷人員派遣協議
- 大學生生涯發展報告新能源汽車
- 人教部編版《道德與法治》六年級下冊第5課《應對自然災害》精美課件
- JJG 257-2007浮子流量計行業標準
- 電力系統中的諧振過電壓
- 2024年遼寧省葫蘆島市高三下學期一模生物試題及答案
- 護理查房-急性淋巴細胞白血病課件
- 小學語文群文閱讀知識講座
- H型鋼規格表格
- 顱骨修補術后護理健康指導
- 2024年江西省成考(專升本)計算機應用基礎考試真題含解析
- 現代制造技術課件
評論
0/150
提交評論