• /  76
  • 下載費用: 25積分  

微型計算機原理與匯編語言 第4章-指令系統.ppt

'微型計算機原理與匯編語言 第4章-指令系統.ppt'
4.1.3 8086/8088指令系統8086/8088CPU指令系統包含有133條基本指令。按其功能可以分為6類,它們是:⑴ 數據傳送類指令⑵ 算術運算類指令⑶ 邏輯運算與移位類指令⑷ 字符串指令⑸ 控制轉移類指令⑹ 處理器控制類指令。用到的符號意義如下:DST:目的操作數SRC:源操作數OPR:操作數MEM:存儲器操作數REG:寄存器操作數 (16位的AX,BX,CX,DX,BP,SP,SI,DI或 8位的AH,AL,BH,BL,CH,CL,DH,DL)SEG:段寄存器(16位的CS,DS,ES,SS)Data:立即數port:8位的端口地址DST_ADDR:轉移的目標地址COUNT:計數器一、 數據傳送類指令數據傳送類指令將數據、地址或立即數傳送到寄存器或存儲器單元中。它又可分為通用數據傳送指令、累加器專用傳送指令、地址傳送指令和標志傳送指令等四組。(一)通用數據傳送指令1. 最基本的傳送指令指令格式及操作: MOV dst,src ;(dst)←(src) dst 是目的操作數Src 是源操作數需說明一點,對于代碼段寄存器CS和指令指針寄存器IP,通常無需用戶利用傳送指令改變其中的內容。但是CS可以作為源操作數。16位通用寄存器AX BX CX DXBP SP SI DIAL BL CL DLAH BH CH DH段寄存器CS DS SS ES存儲器立即數16位8\16位8\16位8\16位MOV 指令數據傳送方向說明:*DST和SRC的組合關系是:① REG/MEM <= data ② REG/MEM REG ③ REG/MEM SEG*CS不能做目的操作數;*不能MEMMEM,不能SEGSEG, 不能SEG<=data*MOV不改變源操作數,不影響標志位。例:MOV AL,80H MOV [BX],1020H MOV AX,BX MOV DH,AL MOV [BX+10H],DX MOV DX,[BX+SI] MOV SS,AX MOV SS,[1000H] MOV AX,DS MOV [3020H],DS2.堆棧操作指令堆棧操作指令是用來完成壓入和彈出堆棧操作的。⑴ 壓入堆棧指令指令格式及操作: PUSH src ;(SP) ←(SP)-2, ((SP)+1:(SP)) ←(src)⑵ 彈出堆棧指令指令格式及操作: POP dst ; (dst) ←((SP)+1:(SP)), (SP) ←(SP)+2 源操作數src和目的操作數dst可以是REG/MEM/SEG ,且必須是16位的操作數,但不能是立即數。說明:*堆棧按后進先出原則組織。*堆棧操作以字為單位進行。*目的操作數dst不可以是CS。例:PUSH [BX+DI] PUSH AX PUSH CS POP [BX+SI+1020H] POP BX POP DS例:已知(AX)=1234H,(BX)=5678H,分析下面程序段的執行過程。 1 PUSH AX 2 PUSH AX PUSH BX PUSH BX POP AX POP BX POP BX POP AX3.交換指令XCHG (Exchange)格式:XCHG OPR1,OPR2執行操作:OPR1 OPR2說明 兩個操作數中必有一個是寄存器 REG REG/MEM例: XCHG BX,[BP+SI] XCHG DL,BL XCHG BX,CX XCHG [2000H],AH XCHG [2000H],BX XCHG DX XCHG BL(二) 累加器專用指令這類指令中的一個操作數必須是累加器。累加器操作數可以是8位的,也可以是16位的。1.輸入/輸出指令輸入輸出指令可以分為兩大類:一類是直接端口地址的輸入/輸出指令:一類是通過DX寄存器間接端口地址的輸入/輸出指令。⑴ 輸入指令①直接尋址的輸入指令指令格式及操作: IN acc, port ;(acc) ←(port)②間接尋址的輸入指令指令格式及操作: IN acc, DX ;(acc) ←((DX))⑵ 輸出指令①直接尋址的輸出指令指令格式及操作: OUT port, acc ; (port) ← (acc) ②間接尋址的輸出指令指令格式及操作: OUT DX, acc ; ((DX)) ← (acc) 2.字節轉換指令指令格式及操作: XLAT src_table ;(AL) ←((BX)+(AL))XLAT指令是用來將一種字節代碼轉換成另一種字節代碼。常用該指令進行查表操作。使用前先建立一個字節表格,表格的首址存入BX,要轉換的代碼(即相對于表格首址的位移量)放入AL,然后執行XLAT,在AL中得到轉換以后的代碼。XLAT指令還可以有以下幾種表示形式:XLAT ;不寫操作數XLATB ;有B就不允許再寫操作數。 XLAT ES:src_table ;重設段寄存器為ES[例]在內存的數據段有一張16進制數的ASCII碼表,其首地址為Hex_table,如下圖所示,欲將十六進制數0AH轉換成ASCII碼,則可用以下幾條指令實現:MOV BX, OFFSET Hex_tale ;(BX) ←表首址MOV AL, 0AH ;(AL) ←十六進制數AXLAT Hex_table ;查表轉換61000H61001H61002H6100AH6100BH6100FH60000HDS:60000HBX: 1000HAX: 000AH+6100AHHex_tableHex_table+1Hex_table+2Hex_table+AHex_table+BHex_table+FASCII表31H32H41H42H30H46H………0AHALEA6100AH41H41HASCII表Hex_table=1000H(三)地址傳送指令1. 取有效地址指令指令格式: LEA reg16, mem此指令的。省略部分。出的是將要轉移到的位置。③ 使用該指令,可以使程序流程改變到任何目標位置。指令名稱指令格式指令功能轉移范圍段內直接短轉移 JMP disp8 (IP)?(IP)+ disp8-128 ~ +127段內直接近轉移 JMP disp16 (IP)?(IP)+ disp16-32K ~ +32K段內間接轉移 JMP mem/reg (IP) ? (mem) (IP) ? (reg)-32K ~ +32K段間直接轉移 JMP addr (IP)?偏移地址 (CS) ?段地址-32K ~ +32K段間間接轉移 JMP mem (IP) ? (mem) (CS) ? (mem)+2-32K ~ +32K2.條件轉移根據判斷條件是否成立決定是否轉移。按照判斷條件的不同分為以下類型:單個標志、無符號數判斷、有符號數判斷、CX寄存器。條件轉移都是段內直接短轉移,即(IP)=(IP)+Data8類型的轉移。⑴ 判斷單個標志ZF: JZ(JE),JNZ(JNE)SF: JS,JNSOF: JO,JNOPF: JP,JNPCF: JC,JNC⑵ 判斷無符號數的大小助記符中的意義: A:大于,B:小于,E:等于JB(JNAE),JNB(JAE)同JC,JNC,JBE(JNA),JNBE(JA): 判斷CF and ZF⑶ 判斷有符號數的大小助記符中的意義: G:大于,L:小于,E:等于JL(JNGE): SF xor OF = 1JNL(JGE): SF xor OF = 0JLE(JNG):(SF xor OF) and ZF = 1JNLE(JG):(SF xor OF) and ZF = 0使用比較大小的指令時,必須區分是有符號數還是無符號數。指令格式指令功能測試條件說明 JE/JZ disp(IP)?(IP)+(disp)(ZF)=1單標志測試 JNE/JNZ disp(IP)?(IP)+(disp)(ZF)=0 JS disp(IP)?(IP)+(disp)(SF)=1 JNS disp(IP)?(IP)+(disp)(SF)=0 JP/JPE disp(IP)?(IP)+(disp)(PF)=1 JNP/JPO disp(IP)?(IP)+(disp)(PF)=0 JO disp(IP)?(IP)+(disp)(OF)=1 JNO disp(IP)?(IP)+(disp)(OF)=0 JC disp(IP)?(IP)+(disp)(CF)=1 JNC disp(IP)?(IP)+(disp)(CF)=0 JB/JNAE disp(IP)?(IP)+(disp)(CF)=1無符號數測試A:高于B:低于E:等于 JAE/JNB disp(IP)?(IP)+(disp)(CF)=0 JA/JNBE disp(IP)?(IP)+(disp)(CF)=0 且 (ZF)=0 JBE/JNA disp(IP)?(IP)+(disp)(CF)=0 或 (ZF)=0 JG/JNLE disp(IP)?(IP)+(disp)(SF)= (OF) 且 (ZF)=0帶符號數測試G:大于L:小于E:等于 JGE/JNL disp(IP)?(IP)+(disp)(SF)= (OF) JL/JNGE disp(IP)?(IP)+(disp)(SF) ? (OF) 且 (ZF)=0 JLE/JNG disp(IP)?(IP)+(disp)(SF) ? (OF) 或 (ZF)=1 JCXZ disp(IP)?(IP)+(disp)(CX) =0⑷ 判斷CX寄存器JCXZ: CX=03.循環控制循環指令的轉移也都是段內直接短轉移,即(IP)←(IP)+Data8類型的轉移。LOOP 循環判斷CX是否等于零,不等于零則循環LOOPZ(LOOPE) 當為零或相等時循環判斷CX是否等于零,不等于零且ZF=1則循環LOOPNZ(LOOPNE) 當不為零或不相等時循環判斷CX是否等于零,不等于零且ZF=0則循環指令名稱指令格式指令功能測試條件(CX)?0循環 LOOP disp8 (CX) ?(CX)-1當 (CX)?0則 (IP) ?(IP)+disp8(CX)?0為零或相等循環 LOOPZ disp8 LOOPE disp8 (CX) ?(CX)-1當 (CX)?0 且 (ZF)=1則 (IP) ?(IP)+disp8(CX)?0 且 (ZF)=1非零或不等循環 LOOPNZ disp8 LOOPNE disp8 (CX) ?(CX)-1當 (CX)?0 且 (ZF)=0則 (IP) ?(IP)+disp8(CX)?0 且 (ZF)=0說明:① 循環指令不影響狀態標志。② 如果目標位置的位移量超出Data8所能夠表示的范圍,則需要用JMP輔助來完成循環。4.子程序調用 CALL 子程序調用指令用法:CALL dst說明:由編譯程序自動匹配為某種尋址方式。RET 子程序返回指令用法:RET 段內返回:(IP)←(SP),(SP)←(SP)+2段間返回:(IP)←(SP),(SP)←(SP)+2, (CS)←(SP),(SP)←(SP)+2編譯程序自動匹配為段內或段間的返回 RET Data16 在RET的基礎上,把SP再加上一個字數據: (SP)←(SP)+data16注意: 一般data16應該是一個偶數,表示堆棧指針向下移動的字節數。這是因為堆棧操作都是字操作。六、控制類指令 1. 標志處理指令 CLC 對CF清零, CF ← 0 STC 對CF置位, CF ← 1 CMC 對CF取反,CF← CF CLD 對DF清零,DF ← 0 STD 對DF置位,DF ← 1 CLI 對IF清零,IF ← 0 STI 對IF置位,IF ← 13. 處理器控制指令 NOP (No Operation) 空操作 一個字節的機器碼,不執行任何操作,常用在調試程序時使用。HLT (Halt) 停機 處理器停止工作,等到外部中斷到來,中斷結束后繼續向下執行。WAIT (Wait) 等待 處理器處于等待狀態,等到外部的TEST引腳上的低電平到來。ESC (Escape) 換碼 該指令是一個交權的指令前綴,把指令給協處理處理。一般和WAIT指令一起使用,通過TEST引腳和協處理器同步。LOCK (Lock) 封鎖 該指令是一個前綴,使得使用此前綴的指令執行時一直維持總線封鎖狀態。
關 鍵 詞:
微型計算機 匯編語言 指令系統 原理
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:微型計算機原理與匯編語言 第4章-指令系統.ppt
鏈接地址: http://www.476824.live/p-51497012.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 澳洲幸运5口诀 北京pk拾全天计划 江苏11选5网上购买 预测pk10 陕西十一选五预测免费推荐 浙江体育彩票6 1开奖 股票配资平台排名 大乐透初几开售 内蒙古快三预测 北京赛车开奖结果记录