[微機原理課件-].ch5-2_第1頁
[微機原理課件-].ch5-2_第2頁
[微機原理課件-].ch5-2_第3頁
[微機原理課件-].ch5-2_第4頁
[微機原理課件-].ch5-2_第5頁
已閱讀5頁,還剩49頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、下列指令源操作數和目的操作數的尋址方式分別是什么? (1) MOV DX,100H (2) MOV BX,0100H (3) MOV CX,DATASI (4) MOV ES:SI,AX (5) ADD AX,BXDI (6) AND AX,BX (7) XOR AX,BX (8) MOV AL,DATA BPDI 1第二節 8086/8088的指令系統 第一部分指令系統概述 第二部分 8086/8088的指令系統8086/8088的指令系統2第一部分指令系統概述8086/8088的指令系統中的基本指令共133條.可以分成6個功能組:1數據傳送(Data transfer)2算術運算(Arit

2、hmetic)3邏輯運算和移位指令(Logic& Shift)4串操作(String manipulation)5控制轉移(Control Transfer)6處理器控制(Processor Control)3介紹指令系統使用的符號:八位寄存器: AH,AL,BH,H,BL,CH,CL,DH,DL 十六位通用寄存器: AX,BX,CX,DX,SP,BP,SI,DI 堆棧指針 SP 指令指針 IP(或PC)標志位Flags目的和源變址寄存器DI, SI段寄存器CS, DS, ES, SS通用寄存器regAL或AX(取決于操作數長度) acc4src , dest源,目的操作數(下列尋址方式都可以

3、用) BX+SI+n,BX+DI+n,BP+SI+n,BP+DI+nSI+n,DI+n, BP+n, BX+nN,r 存儲器單元的內容(正常在數據段)ES: 附加存儲器段的內容 Sreg 段寄存器(CS,DS,ES,SS)MEM 內存操作數(MEM8MEM16)IMM 立即數 (IMM8IMM16)P8 8位I/O端口號58086/8088指令助記符表68086/8088指令助記符表(續)7學習指令的注意事項指令的功能該指令能夠實現何種操作。通常指令助記符就是指令功能的英文單詞或其縮寫形式指令支持的尋址方式該指令中的操作數可以采用何種尋址方式指令對標志的影響該指令執行后是否對各個標志位有影響,

4、以及如何影響其他方面該指令其他需要特別注意的地方,如指令執行時的約定設置、必須預置的參數、隱含使用的寄存器等8第二部分 8086/8088指令系統一、 數據傳送指令(Data transfer)(一)通用傳送指令(General Purpose Transfer)(二)輸入輸出指令(Input and Output)(三)目的地址傳送指令(Address-object transfer)(四)標志傳送指令(Flag register transfer)9一數據傳送指令功能: 負責把數據、地址或立即數傳送到寄存器或存儲單元。特點: 它是計算機最基本、最重要的一種操作,使用比例最高。種類(分四種)

5、: 通用傳送指令包括: MOV, PUSH, POP ,XCHG, XLAT。 輸入輸出指令指令包括: IN, OUT。 目的地址傳送指令包括: LEA, LDS, LES 標志傳送指令包括 : LAHF, SAHF, PUSHF, POPF 除 SAHF和POPF指令外,對標志位沒有影響。10(一)通用傳送指令(General Purpose Transfer)8088提供方便靈活的通用的傳送操作,適用于大多數操作數。通用傳送指令(除了XCHG以外)是唯一允許以段寄存器為操作數指令。通用傳送指令包括:1、MOV (Movement)2、PUSH (Push word onto stack)

6、POP (Pop word off stack)3、XCHG (Exchange)4、XLAT (Translate)111MOVdest,src ; (dest) (src) 功能: 把一個字節(B)或一個字(W)操作數由源傳送至目的。 實現:寄存器 寄存器/存儲器之間;立即數寄存器/存儲器寄存器/存儲器段寄存器之間的數據傳送。通用寄存器AX BX CX DXBP SP SI DIAL BL CL DLAH BH CH DH段寄存器CS DS SS ES存儲器立即數16位816位816位816位MOV 指令數據傳送方向12 具體說,通用數據傳送指令能實現: CPU內部寄存器之間的數據的任意傳

7、送(除了碼段寄存器CS和指令指針IP以外)。段寄存器之間不能傳送。例: MOV DL,CH ; 8位寄存器 8位寄存器 MOV AX,DX ; 16位寄存器 16位寄存器 MOV SI, BP MOV DS,BX ;通用寄存器 段寄存器 MOV AX, CS ;段寄存器 通用寄存器13立即數傳送至CPU內部通用寄存器組 (AX、BX、CX、DX、BP、SP、SI、DI)。 用于給寄存器賦初值。 不能直接給段寄存器賦值例: MOV CL,04H;立即數8位寄存器 MOV AX,03FFH;立即數16位寄存器14CPU內部寄存器(除CS和IP外)與存儲器(所有尋址方式)之間數據傳送。可以實現一字節

8、或一個字的傳送。 存儲單元之間不能直接傳送 例:MOV MEM , AX; 累加器存儲器,直接尋址MOV MEM ,DS;段寄存器存儲器,直接尋址MOV DISPBX ,CX;寄存器存儲器,變址尋址MOV AX , DISP SI;存儲器累加器,變址尋址MOV DS , MEM;存儲器段寄存器,直接尋址MOV CX , DISP BX SI ;存儲器累加器,相對基址加變址15 注意:(1)不能用一條MOV指令實現以下傳送。 存儲單元之間的傳送MOV MEM2 , MEM1 錯。MOV AX , MEM1MOV MEM2 , AX 對。 立即數送段寄存器 例 : MOV DS,2000H 錯。

9、MOV AX, 2000HMOV DS , AX 對。 16 段寄存器之間的傳送MOV ES , DS ; 錯MOV AX , DSMOV ES , AX ; 對 。 注意CS和IP的使用CS和IP不能作為目標操作數,CS可以作為源操作數。例:MOV CS,AX ; 錯 MOV AX,CS ;對 。 MOV IP, AX ;錯 MOV AX, IP ; 對。17(2)段地址的默認BX、SI、DI間址默認段地址為DS,BP間址默認段地址SS。(3)凡是遇到給SS賦值指令,系統自動禁止外部中斷,執行本條指令和下條指令,恢復對SS寄存器賦值前的中斷開放情況。這樣做為了允許程序員連續用兩條指令分別對S

10、S和SP寄存器賦值,同時又防止堆??臻g變動過程出現中斷。*在修改SS和SP的指令之間不要插入其他指令。(4)所有通用傳送指令不影響標志位(除SAHF、POPF以外)。18 MOV指令應用例:實現將AREA1開始的100個數據傳送到AREA2開始的單元。AREA1:AREA2:100個數據19分析題意: 可以用200條MOV指令來完成100個數據傳送, 指令操作重復,每個數據傳送后的地址是變化的。 可以利用循環,但每循環一次要修改地址(源地址和目的地址),必須把地址放在寄存器當中,用寄存器間接尋址來尋找操作數.20得到如下程序:MOV SI,OFFSET AREA1 MOV DI,OFFSET

11、AREA2 MOV CX,100AGAIN :MOV AL,SIMOV DI,AL INC SI ;修改地址指針 INC DI ;修改地址指針 DEC CX;修改個數 JNZ AGAIN21指出以下這些指令的對或錯,并說明原因。1、MOV 52,AH2、MOV CS,AH3、MOV DI,SI4、MOV 1000,SI5、MOV IP,BX6、MOV DS,1234H立即數不能作為目的操作數 CS不能作為目的操作數 內存單元之間不能直接傳送 內存單元之間不能直接傳送 IP不能作為目的操作數 不能用立即數對段寄存器賦值222 PUSH (Push word onto stack) POP (Po

12、p word off stack) 這是兩條堆棧操作指令。(1) 先回憶一下什么是堆棧,為什么需要堆棧堆棧按照先進后出原則組織的一段內存區域特點: 下推式的(規定堆棧設置在堆棧段內)改變SP的內容,隨著推入堆棧內容增加,SP的值減少。 后進先出工作原則(Last In First Out 簡稱LIFO)23堆棧用途: 存放CPU寄存器或存儲器中暫時不使用的數據, 使用數據時將其彈出; 調用子程序, 響應中斷時都要用到堆棧。 調用子程序(或過程)或發生中斷時要保護斷點的地址, 子程序或中斷返回時恢復斷點。24調用子程序時需保留內容: 調用子程序:將下條指令地址即IP值保留下來(8088中碼段寄存

13、器CS和指令指針IP), 才能保證子程序執行完后準確返回主程序繼續執行。執行子程序時,通常用到內部寄存器,執行結果會影響標志位,必須在調用子程序之前將現狀保護起來 子程序嵌套或子程序遞歸(自調自) 保留許多信息,而且保證正確返回(且后進先出)。 后保留先取出原則(即LIFO-LAST In First out)。注意:SP堆棧指針,始終指向棧頂。SP初值用MOV SP,i m來設定。25(2) 堆棧操作指令 (堆棧操作指令有兩條): 入棧指令格式:PUSH src; (SP) (SP)-2 (SP)+1,(SP) (src) 把一個字從源操作數由SP指向堆棧頂部。操作如:PUSH AX 出棧指

14、令格式:POP dest ;(dest) (SP)+1,(SP) (SP) (SP)+2把現行SP所指向堆棧頂部的一個字 指定的目的操作數,同時進行修改堆棧指針的操作。操作如: POP BX26應用時注意: 堆棧操作都按字操作。 PUSH , POP 指令的操作數可能有三種:寄存器(通用寄存器,地址指針,變址寄存器),段寄存器(CS除外,PUSH CS 合法,POP CS 非法)存儲器,操作數必須是16位的,且不能是立即數。 執行PUSH 指令, (SP)-2 (SP),低字節放在低地址,高字節放在高地址。 PUSH ,POP指令應該成對使用,保持堆棧原有狀態。 堆棧最大容量即為SP的初值與S

15、S之間的差。27堆棧應用舉例: 例:用BP的基址指令 代替POP指令MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP, 6例 : 壓入堆棧的內容與彈出內容順序相反PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX283、交換指令(Exchange)格式:XCHG dest , src;(dest) (src)執行操作: 把一個字節或一個字的源操作數與目的操作數相交換。 可以 實現: 寄存器之間 寄存器和存儲器之間注意: 存儲器之間不能交換,兩個操作數中必須有一個在寄存器中;

16、 段寄存器不能作為一個操作數; 允許字或字節操作,不影響標志位。29應用舉例:XCHG BL,DLXCHG AX,SIXCHG COUNTDI, AXXCHG BX,DI(錯)XCHG DS, AX (錯)30XLAT(Trans late)換碼指令: 該指令不影響標志位。格式: XLAT str_table;(AL)(BX )+(AL) 或 XLAT str_table表格符號地址(首地址), 只是為了提高可讀性而設置,匯編時仍用BX。 31XLAT指令使用方法: 先建立一個字節表格; 表格首偏移地址存入BX; 需要轉換代碼的序號(相對與表格首地址位移量)存入AL; (表中第一個元素的序號為

17、0) 執行XLAT指令后,表中指定序號的元素存于AL中。 (AL)為轉換的代碼。由于AL只有8位,所以表的長度不能超過256字節. 32XLAT指令應用: 若把字符的掃描碼轉換成ASCII碼; 或數字09轉換成7段數碼所需要的相應代碼(字形碼)等就要用XLAT指令。例:內存的數據段中有一張十六進制數字的ASCII碼表。 首地址為:Hex_table ,欲查出表中第10個元素(A)33執行指令序列:MOV BX,OFFSET Hex_tableMOV AL,0AHXLAT Hex_table假設:(DS)=F000H, Hex_table=0040H(AL)=0AH執行XLAT以后: (AL)=

18、41H=(F004AH),即“A”的ASCII碼。30H31H32H.39H41H42H.46H.Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FHFBA912016進制數的ASCII碼表34(二)輸入輸出指令(Input and Output)輸入輸出指令共兩條: 1、 IN (Input byte or word) 2 、OUT (Output byte or word) 輸入指令用于CPU從外設端口接受數據, 輸出指令用于CPU向外設端口發送數據。 無論接受還是發送數據,必須通過累加器AX(字)或A

19、L(字節),又稱累加器專用傳送指令 。 輸入、輸出指令不影響標志位。35每個外設要占幾個端口:數據口,狀態口和控制口。36信息交換要通過端口,在IBMPC機里,可以配接許多外部設備,每個外設與CPU之間交換數據,狀態信息和控制命令,每一種信息交換都要通過一個端口來進行。端口數:外部設備最多有65536個I/O端口。 A0 - A15譯碼形成。端口號:端口號(即外設端口地址)為0000H - FFFFH。PC機僅使用A0 - A9譯碼形成I/O口地址,即1024H個口地址 端口號:0000H - 03FFH其中: A9=1,表示擴充槽上的口地址。37長格式:端口號中前256個端口(0-FFH),

20、可以直接寫在指令中,這就是長格式(直接尋址)。端口號代替指令中的PORT,機器指令用二字節表示,第二字節就是端口號。短格式:當端口號256時,只能使用短格式,必須先把端口號放到DX寄存器中(間接尋址)。不需要用任何段寄存器來修改它的值。381、IN (Input byte or word) 輸入指令格式:IN acc, port ;(acc) (port)具體形式有四種:IN AL, data8 ; 端口地址8位,輸入一個字節IN AX, data8 ;端口地址8位,輸入一個字IN AL, DX ;端口地址16位,輸入一個字節IN AX, DX ;端口地址16位,輸入一個字 必須通過累加器AX

21、(字)或AL(節)輸入數據。392 、OUT(Output byte or word) 輸出指令格式: OUT port, acc ;(port) (acc)具體形式有四種: OUT data8 , AL ; 端口地址8位,輸出一個字節 OUT data8, AX ;端口地址8位,輸出一個字 OUT DX , AL ;端口地址16位,輸出一個字節 OUT DX , AX ;端口地址16位,輸出一個字 必須通過累加器AX(字)或AL(節)輸出數據。40例1:實現(29H)(28H)(DATA_WORD) IN AX,28H MOV DATA_WORD,AX例2:從端口3FCH 送一個字到AX寄存

22、器MOV DX,3FCH IN AX,DX ; (AL)(3FCH), (AH)(3FDH) 例3:實現將(AL) (05H) OUT 5,AL;(05H)(AL)41(三)目的地址傳送指令(Address-object transfer) 8086 /8088 提供三條:地址指針寫入指定寄存器或寄存器對指令。1、LEA(Load Effective Address)2、LDS (Load pointer using DS)3、LES (Load pointer using ES)421、LEA(Load Effective Address)格式: LEA reg16 , mem16 ;EA(

23、reg16)功能:加載有效地址,用于寫進地址指針。把指令指定存儲器操作數有效地址裝入指定的寄存器例:設(BX)=0400H,(SI)=003CHLEA BX,BX+SI+0F62H執行指令后: EA=(BX)+(SI)=0F62H=0400H+003CH+0F62H=139EH(BX)=139EH43注意:設 (DS)=3000HBUFFER=1000H(31000H)=0040H(1) LEA 指令與MOV 的區別LEA BX , BUFFER ;(BX)=1000HMOV BX , BUFFER ; (BX)=0040H LEA 指令與MOV等價LEA BX , BUFFER ; (BX)

24、=1000HMOV BX , OFFSET BUFFER ; (BX)=1000H44(2)LEA 指令中的目標寄存器必須是16位的通用寄存器,源操作數必須是一個存儲器。(3)請思考下列指令的正、誤LEA DX ,BETABXSILEA DX , AX452、LDS (Load pointer using DS)格式:LDS reg16, mem32 ;(reg16)(EA)(DS)(EA)+2)功能:將指令指定32位地址指針送指令指定寄存器和DS。將指令指定mem32單元的前兩個單元內容(16位偏移量)裝入指定通用寄存器,把后兩個單元內容(段地址) 裝入到DS段寄存器。用于寫遠地址指針。46

25、例: 假設: (DS)=C 000H指令:LDS SI, 0010H執行指令后: (SI)=0180H (DS)=2000H 473、LES (Load pointer using ES)格式:LES reg16, mem32 ;(reg16)(EA) (ES)(EA)+2)功能:把源操作數指定的4個相繼字節送指令指定的寄存器及ES寄存器中。 此指令常常指定DI寄存器。將指令指定mem32單元的前兩個單元內容(16位偏移量)裝入指定通用寄存器,把后兩個單元內容(段地址) 裝入到ES段寄存器。用于寫遠地址指針。48例: 假設: (DS)=B 000H (BX)=080AH指令:LES DI, BX執行指令后: (DI)=05

溫馨提示

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

評論

0/150

提交評論