匯編語言8086指令系統(tǒng)_第1頁
匯編語言8086指令系統(tǒng)_第2頁
匯編語言8086指令系統(tǒng)_第3頁
匯編語言8086指令系統(tǒng)_第4頁
匯編語言8086指令系統(tǒng)_第5頁
已閱讀5頁,還剩211頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 2 章第二章第二章8088指令系統(tǒng)指令系統(tǒng)教學重點重點掌握常用指令功能及應用重點掌握常用指令功能及應用常用傳送指令常用傳送指令加減法指令加減法指令邏輯運算和移位指令邏輯運算和移位指令控制轉移指令控制轉移指令字符(串)輸入輸出功能調(diào)用字符(串)輸入輸出功能調(diào)用第 2 章本節(jié)主要指令系統(tǒng) 數(shù)據(jù)傳送類指令:數(shù)據(jù)傳送類指令: MOVXCHG、PUSHPOP、LEA 算術運算類指令:算術運算類指令: ADDADCINC、SUBSBBDECCMPNEG、 MULIMUL、DIVIDIV 位操作類指令:位操作類指令: ANDORXORNOTTEST 控制轉移類指令:控制轉移類指令: JMPJccLOOP

2、、CALLRET、INT n 處理機控制類處理機控制類指令指令 NOP第 2 章什么是指令系統(tǒng)計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)計算機的指令系統(tǒng)就是指該計算機能夠執(zhí)行的全部指令的集合行的全部指令的集合每種計算機都有它支持的指令集合每種計算機都有它支持的指令集合 1616位位80868086指令系統(tǒng)是指令系統(tǒng)是Intel 80 x86Intel 80 x86系列微系列微處理器指令系統(tǒng)的基礎處理器指令系統(tǒng)的基礎Intel 80 x86Intel 80 x86系列微處理器指令系統(tǒng):系列微處理器指令系統(tǒng):n整數(shù)指令整數(shù)指令n浮點指令浮點指令n多媒體指令多媒體指令第 2 章8086指令系統(tǒng)概述Inte

3、l 8086Intel 8086指令系統(tǒng)共有指令系統(tǒng)共有117117條基本指令條基本指令可分成可分成6 6個功能組個功能組 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 算術運算類指令算術運算類指令 位操作類指令位操作類指令 串操作類指令串操作類指令 控制轉移類指令控制轉移類指令 處理機控制類指令處理機控制類指令第 2 章學習指令的注意事項指令的功能指令的功能該指令能夠實現(xiàn)何種操作。該指令能夠實現(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或通常指令助記符就是指令功能的英文單詞或其縮寫形式其縮寫形式指令支持的尋址方式指令支持的尋址方式該指令中的操作數(shù)該指令中的操作數(shù)可以采用何種尋址方式可以采用何種尋址方式指

4、令對標志的影響指令對標志的影響該指令執(zhí)行后是否對該指令執(zhí)行后是否對各個標志位有影響,以及如何影響各個標志位有影響,以及如何影響其他方面其他方面該指令其他需要特別注意的地該指令其他需要特別注意的地方,如指令執(zhí)行時的約定設置、必須預置的方,如指令執(zhí)行時的約定設置、必須預置的參數(shù)、隱含使用的寄存器等參數(shù)、隱含使用的寄存器等第 2 章匯編語言指令格式由由4 4部分組成:部分組成:標號標號: : 指令助記符指令助記符 目的操作數(shù)目的操作數(shù), ,源操作數(shù)源操作數(shù) ; ; 注釋注釋 標號標號表示該指令在主存中的邏輯地址表示該指令在主存中的邏輯地址 每個指令每個指令助記符助記符就代表一種指令就代表一種指令 目

5、的和源目的和源操作數(shù)操作數(shù)表示參與操作的對象表示參與操作的對象 注釋注釋是對該指令或程序段功能的說明是對該指令或程序段功能的說明教學提示全面而準確地理解每條指全面而準確地理解每條指令的功能和應用,是編寫令的功能和應用,是編寫匯編語言程序的關鍵匯編語言程序的關鍵第 2 章2.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是計算機中最基本、最重要的一種數(shù)據(jù)傳送是計算機中最基本、最重要的一種操作操作傳送指令也是最常使用的一類指令傳送指令也是最常使用的一類指令傳送指令把數(shù)據(jù)從一個位置傳送到另一個位傳送指令把數(shù)據(jù)從一個位置傳送到另一個位置置除標志寄存器傳送指令外,均除標志寄存器傳送指令外,均不影響標志不影響標志位位重點掌握

6、重點掌握nMOV XCHGnPUSH POPnLEA第 2 章2.1.1 通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送操作提供方便靈活的通用傳送操作有有3條指令條指令MOVXCHGXLAT第 2 章1. 傳送指令MOV(move)把一個字節(jié)或字的操作數(shù)從源地址傳送至目把一個字節(jié)或字的操作數(shù)從源地址傳送至目的地址的地址MOV reg/mem,immMOV reg/mem,imm;立即數(shù)送寄存器或主存;立即數(shù)送寄存器或主存例題例題2.1MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例題例題2.2MOV reg/seg,

7、memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器例題例題2.3MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存例題例題2.5例例2.1:立即數(shù)傳送:立即數(shù)傳送mov al,4mov al,4;al4al4,字節(jié)傳送,字節(jié)傳送mov cx,mov cx,0 0ffhffh;cx00ffhcx00ffh,字傳送,字傳送mov si,200hmov si,200h;si0200hsi0200h,字傳送,字傳送mov mov byte ptrbyte ptr si, si,0ah0ah;byte ptr byte

8、ptr 屬性修飾符,說明是操作數(shù)為字節(jié)屬性修飾符,說明是操作數(shù)為字節(jié)mov mov word ptrword ptr si+2, si+2,0bh0bh;word ptr word ptr 說明是字操作說明是字操作 注意立即數(shù)是字節(jié)量還是字量注意立即數(shù)是字節(jié)量還是字量 明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作例例2.2:寄存器傳送:寄存器傳送mov ax,bxmov ax,bx;axbxaxbx,字傳送,字傳送mov ah,almov ah,al;ahalahal,字節(jié)傳送,字節(jié)傳送mov ds,axmov ds,ax;dsaxdsax,字傳送,字傳送mov bx,almov

9、bx,al;bxalbxal,字節(jié)傳送,字節(jié)傳送例例2.3:存儲器傳送:存儲器傳送mov al,bxmov al,bxmov dx,bpmov dx,bp;dxss:bpdxss:bpmov es,simov es,si;esds:siesds:si 不存在存儲器向存儲器的傳送指令不存在存儲器向存儲器的傳送指令例例2.5:段寄存器傳送:段寄存器傳送mov si,dsmov si,dsmov ax,esmov ax,es;axesaxesmov ds,axmov ds,ax;dsaxesdsaxes 對段寄存器的操作有一些限制對段寄存器的操作有一些限制第 2 章MOV指令傳送功能MOV并非任意傳

10、送并非任意傳送立即數(shù)立即數(shù)段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲儲器器第 2 章非法傳送種種兩個操作數(shù)的類型不一致兩個操作數(shù)的類型不一致n例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反或相反兩個操作數(shù)不能都是存儲器兩個操作數(shù)不能都是存儲器n傳送指令很靈活,但主存之間的直接傳送傳送指令很靈活,但主存之間的直接傳送卻不允許卻不允許段寄存器的操作有一些限制段寄存器的操作有一些限制n段寄存器屬專用寄存器,對他們的操作能段寄存器屬專用

11、寄存器,對他們的操作能力有限力有限兩個操作數(shù)的類型要一致絕大多數(shù)雙操作數(shù)指令,除非特別說明,目絕大多數(shù)雙操作數(shù)指令,除非特別說明,目的操作數(shù)與源操作數(shù)必須類型一致,否則為非的操作數(shù)與源操作數(shù)必須類型一致,否則為非法指令法指令MOV AL,050AHMOV AL,050AH;非法指令:;非法指令:050Ah050Ah為字,而為字,而ALAL為字節(jié)為字節(jié)寄存器有明確的字節(jié)或字類型,有寄存器參寄存器有明確的字節(jié)或字類型,有寄存器參與的指令其操作數(shù)類型就是寄存器的類型與的指令其操作數(shù)類型就是寄存器的類型對于存儲器單元與立即數(shù)同時作為操作數(shù)的對于存儲器單元與立即數(shù)同時作為操作數(shù)的情況,必須顯式指明;情況

12、,必須顯式指明;byte ptrbyte ptr指示字節(jié)類指示字節(jié)類型,型,word ptrword ptr指示字類型指示字類型第 2 章兩個操作數(shù)不能都是存儲器80868086指令系統(tǒng)不允許兩個操作數(shù)都是存儲單指令系統(tǒng)不允許兩個操作數(shù)都是存儲單元(除串操作指令),要實現(xiàn)這種傳送,可通元(除串操作指令),要實現(xiàn)這種傳送,可通過寄存器間接實現(xiàn)過寄存器間接實現(xiàn)mov ax,buffer1mov ax,buffer1;axbuffer1axbuffer1(將(將buffer1buffer1內(nèi)容送內(nèi)容送axax)mov buffer2,axmov buffer2,ax;buffer2axbuffer2

13、ax;這里;這里buffer1buffer1和和buffer2buffer2是兩個字變量是兩個字變量;實際表示直接尋址方式;實際表示直接尋址方式第 2 章要小心段寄存器的操作不允許立即數(shù)傳送給段寄存器不允許立即數(shù)傳送給段寄存器MOV DS,100H;非法指令:立即數(shù)不能傳送段寄存器;非法指令:立即數(shù)不能傳送段寄存器不允許直接改變不允許直接改變CS值值MOV CS,SI ;不允許使用的指令;不允許使用的指令不允許段寄存器之間的直接數(shù)據(jù)傳送不允許段寄存器之間的直接數(shù)據(jù)傳送MOV DS,ES;非法指令:不允許段寄存器間傳送;非法指令:不允許段寄存器間傳送第 2 章第 2 章2. 交換指令XCHG(e

14、xchange)把兩個地方的數(shù)據(jù)進行互換把兩個地方的數(shù)據(jù)進行互換寄存器與寄存器之間對換數(shù)據(jù)寄存器與寄存器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem例題例題2.7例題例題2.6例例2.6:寄存器間交換:寄存器間交換mov ax,1234hmov ax,1234h;ax=1234hax=1234hmov bx,5678hmov bx,5678h;bx=5678hbx=5678hxchg ax,bxxchg

15、 ax,bx;ax=5678hax=5678h,bx=1234hbx=1234hxchg ah,alxchg ah,al;ax=7856hax=7856h例例2.7:寄存器與存儲器交換:寄存器與存儲器交換xchg ax,2000hxchg ax,2000h ;字交換;字交換;等同于;等同于 xchg 2000h,ax xchg 2000h,axxchg al,2000h xchg al,2000h ;字節(jié)交換;字節(jié)交換;等同于;等同于 xchg 2000h,al xchg 2000h,al 第 2 章2.1.2 堆棧操作指令什么是堆棧?什么是堆棧?堆棧是主存當中的一塊連續(xù)的存儲區(qū)域。堆棧是主存

16、當中的一塊連續(xù)的存儲區(qū)域。有關堆棧的內(nèi)容主要包括:有關堆棧的內(nèi)容主要包括:堆棧的初始化數(shù)據(jù)的進棧數(shù)據(jù)的出棧第 2 章2.1.2 堆棧操作指令堆棧的初始化堆棧的初始化堆棧如同一個倒置的水桶。正置水桶的情況水桶起始位置水面上沿水桶結束位置水桶起始位置水面上沿水桶結束位置(A)不裝水(B)裝水第 2 章2.1.2 堆棧操作指令倒置水桶的情況倒置水桶的情況水桶開始位置水面上沿水桶結束位置水桶開始位置水面上沿水桶結束位置(A)不裝水(B)裝水說明:裝水前和裝水后比較水桶開始位置不變,水面結束位置不變,水面上沿變化第 2 章2.1.2 堆棧操作指令堆棧的情況與倒置水桶類似堆棧的情況與倒置水桶類似堆棧初始化

17、的情況如下:主存高地址低地址設置堆棧段寄存器(設置倒置的水桶開始位置)SS XXXXH設置堆棧指針寄存器設置水桶的結束位置和水面上沿SP YYYYHSS:00SS:SP共SP個存儲單元第 2 章2.1.2 堆棧操作指令高地址低地址SS:00SS:SP0(初設值)堆棧壓入數(shù)據(jù)前后的比較SS:00SS:SP0SS:SP0-234H12H未裝入數(shù)據(jù)裝入3412H后第 2 章2.1.2 堆棧操作指令三個名詞(水桶的三個位置)堆棧起始地址堆棧起始地址:堆棧存儲區(qū)域開始的地址,即SS:00。(如果不重新初始化堆棧,它是不變的)棧底棧底:初始化時的SS:SP。(如果不重新初始化堆棧,它是不變的)棧頂:棧頂:

18、 當前的SS:SP。由于SP值會隨著壓入數(shù)據(jù),或者彈出數(shù)據(jù)而改變,因此棧頂位置是變化的。更確切的說:棧頂實際上是堆棧中存儲的數(shù)據(jù)的頂部第 2 章堆棧的操作堆棧只有兩種基本操作:進棧和出棧,堆棧只有兩種基本操作:進棧和出棧,對應兩條指令對應兩條指令PUSH和和POPWord 1Word 2Word 3Word 4Word 5StackPUSHPOPPUSH;進棧指令先使堆棧指;進棧指令先使堆棧指針針SP減減2,然后把一個字操作數(shù),然后把一個字操作數(shù)存入堆棧頂部存入堆棧頂部POP;出棧指令把棧頂?shù)囊唬怀鰲V噶畎褩m數(shù)囊粋€字傳送至指定的目的操作數(shù),個字傳送至指定的目的操作數(shù),然后堆棧指針然后堆棧指針

19、SP加加2高高低低第 2 章1. 進棧指令PUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg操作過程:操作過程:SPSPSPSP2 2 SS:SPr16/m16/seg SS:SPr16/m16/seg 12StackPUSHSP-2AX內(nèi)容:34執(zhí)行PUSH AX過程第 2 章2. 出棧指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2

20、12StackPOPSP+234AX內(nèi)容:執(zhí)行POP AX過程第 2 章堆棧的特點堆棧操作的單位是字,進棧和出棧只對字堆棧操作的單位是字,進棧和出棧只對字量量字量數(shù)據(jù)從棧頂壓入和彈出時,都是低地字量數(shù)據(jù)從棧頂壓入和彈出時,都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)堆棧操作遵循先進后出原則,但可用存儲堆棧操作遵循先進后出原則,但可用存儲器尋址方式隨機存取堆棧中的數(shù)據(jù)器尋址方式隨機存取堆棧中的數(shù)據(jù)堆棧常用來堆棧常用來n臨時存放數(shù)據(jù)臨時存放數(shù)據(jù)n傳遞參數(shù)傳遞參數(shù)n保存和恢復寄存器保存和恢復寄存器例題例題2.11例例2.11:現(xiàn)場保護恢復:現(xiàn)場保護恢復push axp

21、ush ax;進入子程序后;進入子程序后push bxpush bxpush dspush ds.pop dspop ds;返回主程序前;返回主程序前pop bxpop bxpop axpop ax第 2 章堆棧和隊列堆棧:按照后進先出堆棧:按照后進先出(LIFO)(LIFO)的原則組織的存儲的原則組織的存儲器空間(棧)器空間(棧)隊列:按照先進先出隊列:按照先進先出(FIFO)(FIFO)的原則組織的存儲的原則組織的存儲器空間(堆)器空間(堆)LIFOFIFO第 2 章2.1.3. 標志位操作標志位操作指令直接對標志位操作指令直接對CF、DF、IF標標志進行復位或置位,常用于特定的情況志進行

22、復位或置位,常用于特定的情況對標志位進行設置的指令對標志位進行設置的指令nCLC STC CMCnCLD STDnCLI STI第 2 章進位標志操作指令用于任意設置進位標志用于任意設置進位標志CLCCLC;復位進位標志:;復位進位標志:CF0CF0STCSTC;置位進位標志:;置位進位標志:CF1CF1CMCCMC;求反進位標志:;求反進位標志:CFCFCFCF參考動畫參考動畫第 2 章中斷標志操作指令在編寫中斷服務程序時,需要控制在編寫中斷服務程序時,需要控制可屏蔽中斷的允許和禁止可屏蔽中斷的允許和禁止CLICLI;復位中斷標志:;復位中斷標志:DF0DF0STISTI;置位中斷標志:;置

23、位中斷標志:DF1DF1第 2 章2.1.4 地址傳送指令地址傳送指令將存儲器單元的邏輯地址地址傳送指令將存儲器單元的邏輯地址送至指定的寄存器送至指定的寄存器n有效地址傳送指令有效地址傳送指令 LEA注意不是獲取存儲器單元的內(nèi)容注意不是獲取存儲器單元的內(nèi)容第 2 章有效地址傳送指令LEA(load EA)將存儲器操作數(shù)的有效地址傳送至將存儲器操作數(shù)的有效地址傳送至指定的指定的16位寄存器中位寄存器中例題例題2.13LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEA 獲得主存單元的有效地址;不是物理地獲得主存單元的有效地址;不是物理地址,也不是該單

24、元的內(nèi)容址,也不是該單元的內(nèi)容 可以實現(xiàn)計算功能可以實現(xiàn)計算功能例例2.13:獲取有效地址:獲取有效地址使用時要注意它與使用時要注意它與MOV指令的區(qū)別,指令的區(qū)別,MOV指令指令傳送的一般是源操作數(shù)中的內(nèi)容而不是地址。傳送的一般是源操作數(shù)中的內(nèi)容而不是地址。例例 1 假 設 :假 設 : S I = 1 0 0 0 H , D S = 5 0 0 0 H , (51000H)=1234H 執(zhí)行指令執(zhí)行指令 LEA BX , SI后,后,BX=1000H 執(zhí)行指令執(zhí)行指令 MOV BX , SI后,后,BX=1234H第 2 章2.1.5 輸入輸出指令(IN、OUT)CPU通過輸入輸出指令與通

25、過輸入輸出指令與外設外設(外部設備)進行數(shù)據(jù)交換;進行數(shù)據(jù)交換;8086CPU只能只能通過輸入輸出指令與外設通過輸入輸出指令與外設進行數(shù)據(jù)交換進行數(shù)據(jù)交換CPU與外設進行數(shù)據(jù)交換的途徑:與外設進行數(shù)據(jù)交換的途徑:通過訪問通過訪問端口端口(Port)或者叫)或者叫I/O地址地址來訪問外設來訪問外設幾點說明幾點說明CPU端口外設第 2 章2.1.5 輸入輸出指令(IN、OUT)端口地址范圍端口地址范圍8086用于尋址外設端口的地址線為用于尋址外設端口的地址線為16條,條,端口最多為端口最多為21665536(64K)個;)個; 端口號為端口號為0000HFFFFH每個端口的寬度每個端口的寬度可以從

26、(向)每個端口讀出(寫入)一個可以從(向)每個端口讀出(寫入)一個字節(jié)的外設數(shù)據(jù)字節(jié)的外設數(shù)據(jù)第 2 章輸入輸出尋址方式8086的端口有的端口有64K個,無需分段,設計個,無需分段,設計有兩種尋址方式有兩種尋址方式v直接尋址直接尋址:只用于尋址:只用于尋址00HFFH前前256個個端口,操作數(shù)端口,操作數(shù)i8表示端口號表示端口號vDX間接尋址間接尋址:可用于尋址全部:可用于尋址全部64K個端口,個端口,DX寄存器的值就是端口號寄存器的值就是端口號大于大于FFH的端口只能采用間接尋址方式的端口只能采用間接尋址方式第 2 章外設數(shù)據(jù)的存放位置CPU與外設進行數(shù)據(jù)交換時,讀出或寫入的數(shù)據(jù)存放的位置只

27、能是:AL(讀取8位數(shù)據(jù)時)AX(讀取16位數(shù)據(jù)時)由內(nèi)部電路結構決定第 2 章IN和OUT左操作數(shù)是目的,右操作數(shù)是源。IN的左操作數(shù)被限制為AX或AL,OUT的右操作數(shù)被限制為AX或AL.第 2 章輸入指令IN將外設數(shù)據(jù)傳送給將外設數(shù)據(jù)傳送給CPU內(nèi)的內(nèi)的AL/AXIN AL,i8IN AL,i8;字節(jié)輸入:;字節(jié)輸入:ALI/OALI/O端口(端口(i8i8直接尋址)直接尋址)IN AL,DXIN AL,DX;字節(jié)輸入:;字節(jié)輸入:ALI/OALI/O端口(端口(DXDX間接尋址)間接尋址)IN AX,i8IN AX,i8;字輸入:;字輸入:AXI/OAXI/O端口(端口(i8i8直接尋

28、址)直接尋址)IN AX,DXIN AX,DX;字輸入:;字輸入:AXI/OAXI/O端口(端口(DXDX間接尋址)間接尋址)例題例題2.15例例2.15:輸入字量:輸入字量;直接尋址,字節(jié)量輸入;直接尋址,字節(jié)量輸入in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;直接尋址,字量輸入;直接尋址,字量輸入in ax,20hin ax,20h;間接尋址,字量輸入;間接尋址,字量輸入mov dx,20hmov dx,20hin ax,dxin ax,dx第 2 章輸出指令OUT將將CPU內(nèi)的內(nèi)的AL/AX數(shù)據(jù)傳送給外設數(shù)據(jù)傳送給外設OUT

29、 i8,ALOUT i8,AL;字節(jié)輸出:;字節(jié)輸出:I/OI/O端口端口ALAL(i8i8直接尋址)直接尋址)OUT DX,ALOUT DX,AL;字節(jié)輸出:;字節(jié)輸出:I/OI/O端口端口ALAL(DXDX間接尋址)間接尋址)OUT i8,AXOUT i8,AX;字輸出:;字輸出:I/OI/O端口端口AXAX(i8i8直接尋址)直接尋址)OUT DX,AXOUT DX,AX;字輸出:;字輸出:I/OI/O端口端口AXAX(DXDX間接尋址)間接尋址)例題例題2.16例例2.16:輸出字節(jié)量:輸出字節(jié)量;間接尋址,字節(jié)量輸出;間接尋址,字節(jié)量輸出mov dx,3fchmov dx,3fchm

30、ov al,80hmov al,80hout dx,alout dx,al第 2 章習題1. 1. 堆棧的操作原則是堆棧的操作原則是_。 A A 先進先出先進先出 B B 后進先出后進先出 C C 后進后出后進后出 D D 循環(huán)循環(huán)2. “MOV SP, 3210H”2. “MOV SP, 3210H”和和“PUSH AX”PUSH AX”指令執(zhí)行后,指令執(zhí)行后,SPSP寄存器寄存器的值是的值是_。 A 3211H B 320EH C 320FH D 3212H A 3211H B 320EH C 320FH D 3212H 3. 3. 設設SPSP初值為初值為2000H2000H,執(zhí)行指令,

31、執(zhí)行指令“push ax”push ax”后,后,SPSP的值是的值是_ _ A 1FFFH B 1998H C 2002H D 1FFEH A 1FFFH B 1998H C 2002H D 1FFEH 4. 8086/80884. 8086/8088系統(tǒng)中,堆棧的操作可以是字節(jié)或字操作。系統(tǒng)中,堆棧的操作可以是字節(jié)或字操作。 1. B 2. B 3. D 4. 1. B 2. B 3. D 4. 錯。錯。8086/80888086/8088系統(tǒng)中,堆棧的操作是字操作。系統(tǒng)中,堆棧的操作是字操作。 第 2 章習題21假設當前SP700H,執(zhí)行pop ax指令后,SP內(nèi)容變?yōu)開 A 6FEH

32、B 6FFH C 701H D 702H2. 已知字變量buffer等于1234h,它所在的偏移地址為5678h,執(zhí)行下列指令后Ax=? mov ax,buffer lea ax,buffer A 1234h B 5678h C 3412h D 7856h3. 用一條指令實現(xiàn)將AXBX+SI的方法是_ A xchg ax,bxsi B mov ax,bxsi C mov ax,bx+si D lea ax,bxsi 4. 指令“l(fā)ea ax,bx+di+50”的功能是什么?1.D 2.B 3.D 4.指令“l(fā)ea ax,bx+di+50”可以實現(xiàn)AXBXDI50的功能。 第 2 章習題31、假

33、設假設SS=2000H,SP=0100H,AX=2021H,執(zhí)行命,執(zhí)行命令令PUSH AX ,存放數(shù)據(jù),存放數(shù)據(jù)21H的堆棧區(qū)的物理地址是()的堆棧區(qū)的物理地址是() 、2010220102 B B 、2010120101 C C、200FF200FF D D、200FE200FE、假定、假定DSDS4000H DI=0100H 40100H=55H 4000H DI=0100H 40100H=55H 40101H=AAH,40101H=AAH,執(zhí)行執(zhí)行”LEA BX ,DI”LEA BX ,DI”后后,BX=(),BX=() 、AA55 B 、55AA C、0100 D、41001D 2C

34、第 2 章2.2 算術運算類指令四則運算是計算機經(jīng)常進行的一種操作。算四則運算是計算機經(jīng)常進行的一種操作。算術運算指令實現(xiàn)二進制(和十進制)數(shù)據(jù)的術運算指令實現(xiàn)二進制(和十進制)數(shù)據(jù)的四則運算四則運算請注意算術運算類指令請注意算術運算類指令對標志的影響對標志的影響n掌握:掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMPn熟悉:熟悉:MUL/IMUL、DIV/IDIVn理解:理解:CBW/CWD、DAA/DAS、 AAA/ AAS/AAM/AAD第 2 章加法指令ADD功能:功能:ADD指令將源與目的操作數(shù)相加,結果送到目的操作數(shù)指令將源與目的操作數(shù)相加,結果送到目的操作數(shù)

35、對狀態(tài)標志的影響:對狀態(tài)標志的影響:ADD指令按狀態(tài)標志的定義相應設置狀態(tài)標志指令按狀態(tài)標志的定義相應設置狀態(tài)標志ADD reg,imm/reg/memADD reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD mem,imm/regADD mem,imm/reg;memmemmemmemimm/regimm/reg例題例題2.17a例例2.17a:加法運算:加法運算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhadd al,07hadd al,07h;al=02hal=02hmov word ptr 200h

36、,4652hmov word ptr 200h,4652h;200h=4652h200h=4652hmov bx,1fehmov bx,1feh;bx=1fehbx=1fehadd al,bladd al,bl;al=00hal=00hadd word ptr bx+2,0f0f0hadd word ptr bx+2,0f0f0h;200h=3742h200h=3742h第 2 章帶進位加法指令ADCADC指令將源與目的操作數(shù)相加,再加上進位指令將源與目的操作數(shù)相加,再加上進位CF標志,結果送到目的操作數(shù)標志,結果送到目的操作數(shù)ADC指令按狀態(tài)標志的定義相應設置狀態(tài)標志指令按狀態(tài)標志的定義相應

37、設置狀態(tài)標志ADC指令主要與指令主要與ADD配合,實現(xiàn)多精度加法運算配合,實現(xiàn)多精度加法運算ADC reg,imm/reg/memADC reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFADC mem,imm/regADC mem,imm/reg;memmemmemmemimm/regimm/regCFCF例題例題2.17b例例2.17b:雙字加法:雙字加法mov ax,4652hmov ax,4652h;ax=4652hax=4652hadd ax,0f0f0hadd ax,0f0f0h ;ax=3742hax=3742h,CF=1

38、CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hadc dx,0f0f0hadc dx,0f0f0h ;dx=f325hdx=f325h,CF=0CF=0;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0HF325 3742HF325 3742H第 2 章增量指令INC(increment)INC指令對操作數(shù)加指令對操作數(shù)加1(增量)(增量)INC指令不影響進位指令不影響進位CF標志,按定義設標志,按定義設置其他狀態(tài)標志置其他狀態(tài)標志INC reg/memINC reg/mem;reg/memreg/m

39、emreg/memreg/mem1 1inc bxinc bxinc byte ptr bxinc byte ptr bx第 2 章減法指令SUB(subtract)SUB指令將目的操作數(shù)減去源操作數(shù),指令將目的操作數(shù)減去源操作數(shù),結果送到目的操作數(shù)結果送到目的操作數(shù)SUB指令按照定義相應設置狀態(tài)標志指令按照定義相應設置狀態(tài)標志SUB reg,imm/reg/memSUB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB mem,imm/regSUB mem,imm/reg;memmemmemmemimm/regimm/reg例題例題2

40、.18a例例2.18a:減法運算:減法運算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhsub al,07hsub al,07h;al=0f4hal=0f4h,CFCF0 0mov word ptr 200h,4652hmov word ptr 200h,4652h;200h=4652h200h=4652hmov bx,1fehmov bx,1feh;bx=1fehbx=1fehsub al,blsub al,bl;al=al=0f6h0f6hsub word ptr bx+2,0f0f0hsub word ptr bx+2,0f0f0h;200h=5562h200

41、h=5562h,CFCF1 1第 2 章帶借位減法指令SBBSBB指令將目的操作數(shù)減去源操作數(shù),再減指令將目的操作數(shù)減去源操作數(shù),再減去借位去借位CF(進位),結果送到目的操作數(shù)。(進位),結果送到目的操作數(shù)。SBB指令按照定義相應設置狀態(tài)標志指令按照定義相應設置狀態(tài)標志SBB指令主要與指令主要與SUB配合,實現(xiàn)多精度減法配合,實現(xiàn)多精度減法運算運算SBB reg,imm/reg/memSBB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFSBB mem,imm/regSBB mem,imm/reg;memmemmemmemimm/

42、regimm/regCFCF例題例題2.18b例例2.18b:雙字減法:雙字減法mov ax,4652hmov ax,4652h;ax=4652hax=4652hsub ax,0f0f0hsub ax,0f0f0h ;ax=5562hax=5562h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hsbb dx,0f0f0hsbb dx,0f0f0h ;dx=1143hdx=1143h,CF=1CF=1;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0H1143 5562H1143 5562H第

43、 2 章減量指令DEC(decrement)DEC指令對操作數(shù)減指令對操作數(shù)減1(減量)(減量)DEC指令不影響進位指令不影響進位CF標志,按定義標志,按定義設置其他狀態(tài)標志設置其他狀態(tài)標志DEC reg/memDEC reg/mem;reg/memreg/memreg/memreg/mem1 1dec cxdec cxdec word ptr sidec word ptr si INC指令和指令和DEC指令都是單操作數(shù)指令指令都是單操作數(shù)指令 主要用于對計數(shù)器和地址指針的調(diào)整主要用于對計數(shù)器和地址指針的調(diào)整第 2 章求補指令NEG(negative)NEG指令對操作數(shù)執(zhí)行求補運算:用指令對操

44、作數(shù)執(zhí)行求補運算:用零減去操作數(shù),然后結果返回操作數(shù)零減去操作數(shù),然后結果返回操作數(shù)求補運算也可以表達成:將操作數(shù)按位求補運算也可以表達成:將操作數(shù)按位取反后加取反后加1NEG指令對標志的影響與用零作減法指令對標志的影響與用零作減法的的SUB指令一樣指令一樣NEG reg/memNEG reg/mem;reg/mem0reg/mem0reg/memreg/mem例題例題2.19例例2.19:求補運算:求補運算mov ax,0ff64hmov ax,0ff64hneg alneg al;ax=ff9chax=ff9ch,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF

45、=1CF=1sub al,9dhsub al,9dh;ax=ffffhax=ffffh,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0001hax=0001h,OF=0OF=0、SF=0SF=0、ZF=0ZF=0、PF=0PF=0、CF=1CF=1dec aldec al;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=

46、1、CF=0CF=0第 2 章比較指令CMP(compare)CMP指令將目的操作數(shù)減去源操作數(shù),按指令將目的操作數(shù)減去源操作數(shù),按照定義相應設置狀態(tài)標志照定義相應設置狀態(tài)標志CMP指令執(zhí)行的功能與指令執(zhí)行的功能與SUB指令,但結果指令,但結果不回送目的操作數(shù)不回送目的操作數(shù)CMP reg,imm/reg/memCMP reg,imm/reg/mem;regregimm/reg/memimm/reg/memCMP mem,imm/regCMP mem,imm/reg;memmemimm/regimm/reg例題例題2.20例例2.20:比較:比較AL與與100cmp al,100cmp al,

47、100;al-100al-100jb belowjb below;al100al100,跳轉到,跳轉到belowbelow執(zhí)行執(zhí)行sub al,100sub al,100;al100al100,alal-100alal-100inc ahinc ah;ahah+1ahah+1below:below: . 執(zhí)行比較指令之后,可以根據(jù)標志執(zhí)行比較指令之后,可以根據(jù)標志判斷兩個數(shù)是否相等、大小關系等判斷兩個數(shù)是否相等、大小關系等第 2 章2.2.3 乘法指令MUL r8/m8MUL r8/m8;無符號字節(jié)乘法;無符號字節(jié)乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/

48、m16;無符號字乘法;無符號字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符號字節(jié)乘法;有符號字節(jié)乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符號字乘法;有符號字乘法;DX.AXAXDX.AXAXr16/m16r16/m16第 2 章乘法指令乘法指令分無符號和有符號乘法指令分無符號和有符號乘法指令乘法指令的源操作數(shù)顯式給出,乘法指令的源操作數(shù)顯式給出,隱含使用另隱含使用另一個操作數(shù)一個操作數(shù)AX和和DX字節(jié)量相乘:字節(jié)量相乘:AL與與r8/m8相乘,得到相乘,得到16位位的結果,存入

49、的結果,存入AX字量相乘:字量相乘:AX與與r16/m16相乘,得到相乘,得到32位位的結果,其高字存入的結果,其高字存入DX,低字存入,低字存入AX2.2.3 乘法指令第 2 章無符號和有符號乘法指令在功能上的區(qū)別無符號和有符號乘法指令在功能上的區(qū)別無符號乘法,將兩個操作數(shù)看成是無符號數(shù)無符號數(shù)。計算完成后,將兩個操作數(shù)乘積存入相應寄存器有符號乘法,將兩個操作數(shù)看成是有符號數(shù)補碼有符號數(shù)補碼。計算完成后,將兩個操作數(shù)乘積存入相應寄存器例例2.21:乘法運算:乘法運算mov al,0b4hmov al,0b4h;al=b4h=180al=b4h=180mov bl,11hmov bl,11h;

50、bl=11h=17bl=11h=17mul blmul bl;ax=Obf4h=3060ax=Obf4h=3060;OF=CF=1OF=CF=1,AXAX高高8 8位不為位不為0 0mov al,0b4hmov al,0b4h;al=b4h=al=b4h=7676mov bl,11hmov bl,11h;bl=11h=17bl=11h=17imul blimul bl;ax=faf4h=ax=faf4h=12921292;OF=CF=1OF=CF=1,AXAX高高8 8位含有效數(shù)字位含有效數(shù)字第 2 章乘法指令乘法指令利用利用OF和和CF判斷乘積的高一半是否判斷乘積的高一半是否具有有效數(shù)值具有

51、有效數(shù)值乘法指令對標志的影響乘法指令如下影響乘法指令如下影響OF和和CF標志:標志:nMUL指令指令若乘積的高一半(若乘積的高一半(AH或或DX)為)為0,則則OF=CF=0;否則;否則OF=CF=1nIMUL指令指令若乘積的高一半是低一半的若乘積的高一半是低一半的符號符號擴展擴展,則,則OF=CF=0;否則均為;否則均為1乘法指令對其他狀態(tài)標志乘法指令對其他狀態(tài)標志沒有定義沒有定義 對標志沒有定義:指令執(zhí)行后這些標志是任對標志沒有定義:指令執(zhí)行后這些標志是任意的、不可預測(就是誰也不知道是意的、不可預測(就是誰也不知道是0還是還是1) 對標志沒有影響:指令執(zhí)行不改變標志狀態(tài)對標志沒有影響:指

52、令執(zhí)行不改變標志狀態(tài)第 2 章第 2 章2.2.4 除法指令DIV r8/m8DIV r8/m8;無符號字節(jié)除法:;無符號字節(jié)除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余數(shù)的余數(shù)DIV r16/m16DIV r16/m16;無符號字除法:;無符號字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余數(shù)的余數(shù)IDIV r8/m8IDIV r8/m8;有符號字節(jié)除法:;有符號字節(jié)除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m

53、8的余數(shù)的余數(shù)IDIV r16/m16IDIV r16/m16;有符號字除法:;有符號字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余數(shù)的余數(shù)例題例題2.22除法指令的功能除法指令分無符號和有符號除法指令除法指令分無符號和有符號除法指令除法指令的除數(shù)顯式給出,隱含使用另一個除法指令的除數(shù)顯式給出,隱含使用另一個操作數(shù)操作數(shù)AX和和DX作為被除數(shù)作為被除數(shù)n字節(jié)量除法:字節(jié)量除法:AX除以除以r8/m8,8位商存入位商存入AL,8位余數(shù)存入位余數(shù)存入AHn字量除法:字量除法:DX.AX除以除以r16/m16

54、,16位商存入位商存入AX,16位余數(shù)存入位余數(shù)存入DX除法指令對標志沒有定義除法指令對標志沒有定義除法指令會除法指令會產(chǎn)生結果溢出產(chǎn)生結果溢出第 2 章除法錯中斷當被除數(shù)遠大于除數(shù)時,所得的商就有可能當被除數(shù)遠大于除數(shù)時,所得的商就有可能超出它所能表達的范圍。如果存放商的寄存超出它所能表達的范圍。如果存放商的寄存器器 A L / A X 不 能 表 達 , 便 產(chǎn) 生 溢 出 ,不 能 表 達 , 便 產(chǎn) 生 溢 出 ,8086CPU中就產(chǎn)生編號為中就產(chǎn)生編號為0的內(nèi)部中斷的內(nèi)部中斷除法錯中斷除法錯中斷n對對DIV指令,除數(shù)為指令,除數(shù)為0,或者在字節(jié)除時,或者在字節(jié)除時商超過商超過8位,或

55、者在字除時商超過位,或者在字除時商超過16位位n對對IDIV指令,除數(shù)為指令,除數(shù)為0,或者在字節(jié)除時,或者在字節(jié)除時商不在商不在-128127范圍內(nèi),或者在字除時范圍內(nèi),或者在字除時商不在商不在-3276832767范圍內(nèi)范圍內(nèi)第 2 章例例2.22:除法運算:除法運算mov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=180bl=b4h=180div bldiv bl;商;商alal05h05h5 5;余數(shù);余數(shù)ahah7ch7ch124124mov ax,0400hmov ax,04

56、00h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=bl=b4h=7676idiv blidiv bl;商;商alalf3hf3h1313;余數(shù);余數(shù)ahah24h24h3636第 2 章2.2.5 符號擴展指令CBWCBW;ALAL的符號擴展至的符號擴展至AHAH;如;如ALAL的最高有效位是的最高有效位是0 0,則,則AHAH0000;ALAL的最高有效位為的最高有效位為1 1,則,則AHAHFFHFFH。ALAL不變不變CWDCWD;AXAX的符號擴展至的符號擴展至DXDX;如;如AXAX的最高有效位是的最高有效位是0 0,

57、則,則DXDX0000;AXAX的最高有效位為的最高有效位為1 1,則,則DXDXFFFFHFFFFH。AXAX不變不變什么是什么是符號擴展符號擴展符號擴展指令常用于獲得倍長的數(shù)據(jù)符號擴展指令常用于獲得倍長的數(shù)據(jù)例題例題2.23例題例題2.24符號擴展的概念符號擴展是指用一個操作數(shù)的符號位(即最符號擴展是指用一個操作數(shù)的符號位(即最高位)形成另一個操作數(shù),后一個操作數(shù)的高位)形成另一個操作數(shù),后一個操作數(shù)的各位是全各位是全0(正數(shù))或全(正數(shù))或全1(負數(shù))。(負數(shù))。符號擴符號擴展不改變數(shù)據(jù)大小展不改變數(shù)據(jù)大小n對于數(shù)據(jù)對于數(shù)據(jù)64H(表示數(shù)據(jù)(表示數(shù)據(jù)100),其最高),其最高位位D7為為

58、0,符號擴展后高,符號擴展后高8位都是位都是0,成為,成為0064H(仍表示數(shù)據(jù)(仍表示數(shù)據(jù)100)n對于數(shù)據(jù)對于數(shù)據(jù)FF00H(表示有符號數(shù)(表示有符號數(shù)-256),),其最高位其最高位D15為為1,符號擴展后高,符號擴展后高16位都是位都是1,成為,成為FFFFFF00H(仍表示有符號數(shù)(仍表示有符號數(shù)-256)第 2 章例例2.23:符號擴展:符號擴展mov al,80hmov al,80h;al=80hal=80hcbwcbw;ax=ff80hax=ff80hadd al,255add al,255;al=7fhal=7fhcbwcbw;ax=007fhax=007fh例例2.24:A

59、XBXcwdcwd;DX.AXAXDX.AXAXidiv bxidiv bx;AXDX.AXAXDX.AXBXBX 對有符號數(shù)除法,可以利用符號擴對有符號數(shù)除法,可以利用符號擴展指令得到倍長于除數(shù)的被除數(shù)展指令得到倍長于除數(shù)的被除數(shù) 對無符號數(shù)除法,采用直接使高對無符號數(shù)除法,采用直接使高8位位或高或高16位清位清0,獲得倍長的被除數(shù)。,獲得倍長的被除數(shù)。這就是這就是零位擴展零位擴展第 2 章習題2.9設設X、Y、Z、V均為均為16位位帶符號數(shù),分別存放在帶符號數(shù),分別存放在X、Y、Z、V存儲單元中,閱存儲單元中,閱讀如下程序段,得出它的讀如下程序段,得出它的運算公式,并說明運算結運算公式,并

60、說明運算結果存于何處?果存于何處?VZYX65F302 0024E00500習題習題2.9:算術運算:算術運算1mov ax,Xmov ax,Ximul Yimul Y;DX.AXDX.AXX XY Ymov cx,axmov cx,axmov bx,dxmov bx,dx;BX.CXBX.CXX XY Ymov ax,Zmov ax,Zcwdcwdadd cx,axadd cx,axadc bx,dxadc bx,dx;BX.CXBX.CXX XY YZ Z習題習題2.9:算術運算:算術運算2sub cx,540sub cx,540sbb bx,0sbb bx,0;BX.CXBX.CXX X

溫馨提示

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

評論

0/150

提交評論