微機原理第3章-1_第1頁
微機原理第3章-1_第2頁
微機原理第3章-1_第3頁
微機原理第3章-1_第4頁
微機原理第3章-1_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 3 章1第第3 3章章 指令系統(tǒng)指令系統(tǒng)第 3 章2主要內(nèi)容:指令系統(tǒng)的一般概念指令系統(tǒng)的一般概念對操作數(shù)的尋址方式對操作數(shù)的尋址方式六大類指令的操作原理:六大類指令的操作原理:操作碼的含義操作碼的含義指令對操作數(shù)的要求指令對操作數(shù)的要求指令執(zhí)行的結(jié)果指令執(zhí)行的結(jié)果第 3 章33.13.1 概述第 3 章4了解:指令及指令系統(tǒng);指令及指令系統(tǒng);指令的格式;指令的格式;指令中的操作數(shù)類型;指令中的操作數(shù)類型;指令字長與機器字長;指令字長與機器字長;指令的執(zhí)行時間指令的執(zhí)行時間CISCCISC和和RISCRISC指令系統(tǒng)指令系統(tǒng)第 3 章5一、指令與指令系統(tǒng)指令:指令:控制計算機完成某種操作的

2、命令控制計算機完成某種操作的命令指令系統(tǒng):指令系統(tǒng):處理器所能識別的所有指令的集合處理器所能識別的所有指令的集合指令的兼容性:指令的兼容性:同一系列機的指令都是兼容的。同一系列機的指令都是兼容的。第 3 章6二、指令格式指令中應包含的信息:指令中應包含的信息:運算數(shù)據(jù)的來源運算數(shù)據(jù)的來源運算結(jié)果的去向運算結(jié)果的去向執(zhí)行的操作執(zhí)行的操作第 3 章指令格式指令格式操作碼:操作碼:規(guī)定計算機所要執(zhí)行的操作規(guī)定計算機所要執(zhí)行的操作;操作數(shù):操作數(shù):指出在指令執(zhí)行過程中所需要的數(shù)指出在指令執(zhí)行過程中所需要的數(shù)或操作數(shù)所在的地址或操作數(shù)所在的地址。格式格式:指令語句:指令語句:標號:標號: 助記符助記符

3、操作數(shù)操作數(shù) ;注釋;注釋 例:例:LOOP:ADD AX,0001H;AX內(nèi)容加內(nèi)容加1第 3 章8指令格式: 零操作數(shù)指令:零操作數(shù)指令: 操作碼操作碼 單操作數(shù)指令:單操作數(shù)指令: 操作碼操作碼 操作數(shù)操作數(shù)雙操作數(shù)指令:雙操作數(shù)指令: 操作碼操作碼 操作數(shù),操作數(shù)操作數(shù),操作數(shù)多操作數(shù)指令:多操作數(shù)指令: 三操作數(shù)及以上三操作數(shù)及以上第 3 章9三、指令中的操作數(shù)立即數(shù)立即數(shù)寄存器寄存器存儲器存儲器表征參加操作的數(shù)據(jù)本身表征參加操作的數(shù)據(jù)本身表征數(shù)據(jù)存放的地址表征數(shù)據(jù)存放的地址第 3 章傳送指令傳送指令MOV的格式的格式MOVMOV destdest, ,srcsrc;destsrc

4、destsrc MOVMOV指令的功能是將源操作數(shù)指令的功能是將源操作數(shù)srcsrc傳送至目的傳送至目的操作數(shù)操作數(shù)destdest,例如:,例如:MOV AL,30HMOV AL,30H;AL30HAL30H第 3 章傳送指令傳送指令MOV的功能的功能源操作數(shù)源操作數(shù) src目的操作數(shù)目的操作數(shù) dest30H30H被傳送的數(shù)據(jù)被傳送的數(shù)據(jù)第 3 章 8088/8086 指令的操作數(shù)尋址方式指令的操作數(shù)尋址方式參加操作的數(shù),這種操作數(shù)被稱為立參加操作的數(shù),這種操作數(shù)被稱為立即數(shù)即數(shù)n它可以是它可以是8位數(shù)值位數(shù)值i8(00HFFH)n也可以是也可以是16位數(shù)值位數(shù)值i16(0000HFFFF

5、H)立即數(shù)尋址方式常用來給寄存器或存立即數(shù)尋址方式常用來給寄存器或存儲單元賦值儲單元賦值1 立即尋址(立即尋址(P96)第 3 章立即數(shù)尋址指令MOV AL,05H;AL05HMOV AX,0102H;AX0102H第 3 章立即數(shù)尋址第 3 章2 寄存器尋址寄存器尋址操作數(shù)存放在操作數(shù)存放在CPU的內(nèi)部寄存器中,的內(nèi)部寄存器中,可以是:可以是:n8位寄存器位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DLn16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SPn4個段寄存器個段寄存器seg:CS、DS、SS、ES第 3 章寄存器尋址指令MOV AX,1234H;

6、AX1234HMOV BX,AX;BXAX第 3 章寄存器尋址第 3 章3 存儲器操作數(shù)存儲器操作數(shù)8088/8086設計了多種存儲器尋址方式設計了多種存儲器尋址方式1、直接尋址方式、直接尋址方式2、寄存器間接尋址方式、寄存器間接尋址方式3、寄存器相對尋址方式、寄存器相對尋址方式4、基址變址尋址方式、基址變址尋址方式5、相對基址變址尋址方式、相對基址變址尋址方式第 3 章直接尋址方式直接尋址方式有效地址在指令中直接給出有效地址在指令中直接給出默認的段地址在默認的段地址在DS段寄存器,段寄存器,可使用段超越前綴改變可使用段超越前綴改變MOV AX,2000H;AXDS:2000H;指令代碼:;指

7、令代碼:A10020MOV AX,ES:2000H;AXES:2000H;指令代碼:;指令代碼:26A10020第 3 章直接尋址第 3 章寄存器間接尋址方式有效地址存放在基址寄存器有效地址存放在基址寄存器BX或或變址寄存器變址寄存器SI、DI中中默認的段地址在默認的段地址在DS段寄存器,可段寄存器,可使用段超越前綴改變使用段超越前綴改變MOV AX,SI;AXDS:SI第 3 章寄存器間接尋址第 3 章寄存器相對尋址方式有效地址是寄存器內(nèi)容與有符號有效地址是寄存器內(nèi)容與有符號8位或位或16位位移量之和,寄存器可位位移量之和,寄存器可以是以是BX、BP或或SI、DI有效地址有效地址BX/BP/

8、SI/DI8/16位位移量位位移量段地址對應段地址對應BX/SI/DI寄存器默認是寄存器默認是DS,對應,對應BP寄存器默認是寄存器默認是SS;可用段超越前綴改變可用段超越前綴改變第 3 章寄存器相對尋址指令MOV AX,DI+06H;AXDS:DI+06HMOV AX,BP+06H;AXSS:BP+06H第 3 章寄存器相對尋址第 3 章基址變址尋址方式有效地址由基址寄存器(有效地址由基址寄存器(BX或或BP)的內(nèi)容加上變址寄存器(的內(nèi)容加上變址寄存器(SI或或DI)的內(nèi)容構(gòu)成:的內(nèi)容構(gòu)成:有效地址有效地址BX/BPSI/DI段地址對應段地址對應BX基址寄存器默認是基址寄存器默認是DS,對應

9、,對應BP基址寄存器默認是基址寄存器默認是SS;可用段超越前綴改變;可用段超越前綴改變第 3 章基址變址尋址指令MOV AX,BX+SI;AXDS:BX+SIMOV AX,BP+DI;AXSS:BP+DIMOV AX,DS:BP+DI;AXDS:BP+DI第 3 章基址變址尋址第 3 章相對基址變址尋址方式有 效 地 址 是 基 址 寄 存 器有 效 地 址 是 基 址 寄 存 器(BX/BP)、變址寄存器()、變址寄存器(SI/DI)與一個與一個8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段地址對應段地址對應BX基址寄存器默認是基址寄

10、存器默認是DS,對應,對應BP基址寄存器默認是基址寄存器默認是SS;可用段超越前綴改變;可用段超越前綴改變第 3 章相對基址變址尋址指令MOV AX,BX+SI+06H;AXDS:BX+SI+06H 位移量可用符號表示位移量可用符號表示 同一尋址方式有多種表達形式同一尋址方式有多種表達形式第 3 章相對基址變址尋址第 3 章用符號表示位移量在寄存器相對尋址或相對基址變在寄存器相對尋址或相對基址變址尋址方式中,位移量可用符號址尋址方式中,位移量可用符號表示:表示:MOV AX,SI+COUNT;COUNT是事先定義的變量或常量是事先定義的變量或常量(就是數(shù)值)(就是數(shù)值)MOV AX,BX+SI

11、+WNUM;WNUM也是變量或常量也是變量或常量第 3 章多種表達形式同一尋址方式可以寫成不同的形式:同一尋址方式可以寫成不同的形式:MOV AX,BXSI;等同于;等同于 MOV AX,BX+SIMOV AX,COUNTSI;等同于;等同于 MOV AX,SI+COUNTMOV AX,WNUMBXSI;等同于;等同于 MOV AX,WNUMBX+SI;等同于;等同于 MOV AX,BX+SI+WNUM3.3 8086的指令系統(tǒng)的指令系統(tǒng)重點掌握常用指令功能及應用重點掌握常用指令功能及應用常用傳送指令常用傳送指令加減法指令加減法指令邏輯運算和移位指令邏輯運算和移位指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令字

12、符(串)輸入輸出功能調(diào)用字符(串)輸入輸出功能調(diào)用第 3 章8086指令系統(tǒng)概述Intel 8086Intel 8086指令系統(tǒng)共有指令系統(tǒng)共有117117條基條基本指令,可分成本指令,可分成6 6個功能組個功能組 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 算術運算類指令算術運算類指令 位操作類指令位操作類指令 串操作類指令串操作類指令 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 處理機控制類指令處理機控制類指令第 3 章學習指令的注意事項指令的功能指令的功能該指令能夠?qū)崿F(xiàn)何種操作。該指令能夠?qū)崿F(xiàn)何種操作。通常指令助記符就是指令功能的英文單詞或通常指令助記符就是指令功能的英文單詞或其縮寫形式其縮寫形式指令支持的尋址方式

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

14、該指令在主存中的邏輯地址 每個指令助記符就代表一種指令每個指令助記符就代表一種指令 目的和源操作數(shù)表示參與操作的對象目的和源操作數(shù)表示參與操作的對象 注釋是對該指令或程序段功能的說明注釋是對該指令或程序段功能的說明教學提示全面而準確地理解每條指令全面而準確地理解每條指令的功能和應用,是編寫匯編的功能和應用,是編寫匯編語言程序的關鍵語言程序的關鍵第 3 章3.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令數(shù)據(jù)傳送是計算機中最基本、最數(shù)據(jù)傳送是計算機中最基本、最重要的一種操作重要的一種操作傳送指令也是最常使用的一類指傳送指令也是最常使用的一類指令令傳送指令把數(shù)據(jù)從一個位置傳送傳送指令把數(shù)據(jù)從一個位置傳送到另

15、一個位置到另一個位置除標志寄存器傳送指令外,均除標志寄存器傳送指令外,均不不影響標志影響標志位位第 3 章3.3.1.1 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令提供方便靈活的通用傳送操作提供方便靈活的通用傳送操作有有12條指令條指令MOVXCHGPUSH,POPIN,OUTXLATLEA,LDS,LESPUSHF,POPF第 3 章1. 傳送指令MOV(move)把一個字節(jié)或字的操作數(shù)從源地址傳把一個字節(jié)或字的操作數(shù)從源地址傳送至目的地址送至目的地址MOV reg/mem,immMOV reg/mem,imm;立即數(shù)送寄存器或主存;立即數(shù)送寄存器或主存例題例題1MOV reg/mem/seg,reg

16、MOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例題例題2MOV reg/seg,memMOV reg/seg,mem;主存送(段)寄存器;主存送(段)寄存器例題例題3MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存例題例題4例例1:立即數(shù)傳送:立即數(shù)傳送mov al,4mov al,4;al4al4,字節(jié)傳送,字節(jié)傳送mov cx,mov cx,0000ffhffh;cx00ffhcx00ffh,字傳送,字傳送mov si,200hmov si,200h;si0200hsi0200h,字

17、傳送,字傳送 注意立即數(shù)是字節(jié)量還是字量注意立即數(shù)是字節(jié)量還是字量 明確指令是字節(jié)操作還是字操作明確指令是字節(jié)操作還是字操作例例2:寄存器傳送:寄存器傳送mov ax,bxmov ax,bx;axbxaxbx,字傳送,字傳送mov ah,almov ah,al;ahalahal,字節(jié)傳送,字節(jié)傳送mov ds,axmov ds,ax;dsaxdsax,字傳送,字傳送mov bx,almov bx,al;bxalbxal,字節(jié)傳送,字節(jié)傳送例例3:存儲器傳送:存儲器傳送mov al,bxmov al,bxmov dx,bpmov dx,bp;dxss:bpdxss:bpmov es,simov

18、es,si;esds:siesds:si 不存在存儲器向存儲器的傳送指令不存在存儲器向存儲器的傳送指令例例4:段寄存器傳送:段寄存器傳送mov si,dsmov si,dsmov ax,esmov ax,es;axesaxesmov ds,axmov ds,ax;dsaxesdsaxes 對段寄存器的操作有一些限制對段寄存器的操作有一些限制第 3 章MOV指令傳送功能MOV也并非任意傳送也并非任意傳送立即數(shù)立即數(shù)段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲儲器器第

19、3 章非法傳送種種兩個操作數(shù)的類型不一致兩個操作數(shù)的類型不一致n例如源操作數(shù)是字節(jié),而目的操作例如源操作數(shù)是字節(jié),而目的操作數(shù)是字;或相反數(shù)是字;或相反兩個操作數(shù)不能都是存儲器兩個操作數(shù)不能都是存儲器n傳送指令很靈活,但主存之間的直傳送指令很靈活,但主存之間的直接傳送卻不允許接傳送卻不允許段寄存器的操作有一些限制段寄存器的操作有一些限制n段寄存器屬專用寄存器,對他們的段寄存器屬專用寄存器,對他們的操作能力有限操作能力有限第 3 章兩個操作數(shù)的類型要一致兩個操作數(shù)的類型要一致絕大多數(shù)雙操作數(shù)指令,除非特別說明,目絕大多數(shù)雙操作數(shù)指令,除非特別說明,目的操作數(shù)與源操作數(shù)必須類型一致,否則為非的操作

20、數(shù)與源操作數(shù)必須類型一致,否則為非法指令法指令MOV AL,050AHMOV AL,050AH;非法指令:;非法指令:050Ah050Ah為字,而為字,而ALAL為字節(jié)為字節(jié)寄存器有明確的字節(jié)或字類型,有寄存器參寄存器有明確的字節(jié)或字類型,有寄存器參與的指令其操作數(shù)類型就是寄存器的類型與的指令其操作數(shù)類型就是寄存器的類型對于存儲器單元與立即數(shù)同時作為操作數(shù)的對于存儲器單元與立即數(shù)同時作為操作數(shù)的情況,必須顯式指明;情況,必須顯式指明;byte ptrbyte ptr指示字節(jié)類型,指示字節(jié)類型,word ptrword ptr指示字類型指示字類型第 3 章兩個操作數(shù)不能都是存儲器兩個操作數(shù)不能都

21、是存儲器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;buffer2axbuffer2ax;這里;這里buffer1buffer1和和buffer2buffer2是兩個字變量是兩個字變量;實際表示直接尋址方式;實際表示直接尋址方式第 3 章

22、要小心段寄存器的操作要小心段寄存器的操作不允許立即數(shù)傳送給段寄存器不允許立即數(shù)傳送給段寄存器MOV DS,100H;非法指令:立即數(shù)不能傳送段寄存器;非法指令:立即數(shù)不能傳送段寄存器不允許直接改變不允許直接改變CS值值MOV CS,SI ;不允許使用的指令;不允許使用的指令不允許段寄存器之間的直接數(shù)據(jù)傳送不允許段寄存器之間的直接數(shù)據(jù)傳送MOV DS,ES;非法指令:不允許段寄存器間傳送;非法指令:不允許段寄存器間傳送第 3 章2 堆棧操作指令堆棧操作指令堆棧是一個堆棧是一個“后進先出后進先出LIFO”LIFO”(或說(或說“先進后先進后出出FILO”FILO”)的主存區(qū)域,)的主存區(qū)域,位于堆

23、棧段中;位于堆棧段中;SSSS段寄段寄存器存器記錄其段地址記錄其段地址堆棧只有一個出口,即堆棧只有一個出口,即當前棧頂;用當前棧頂;用堆棧指針堆棧指針寄存器寄存器SPSP指定指定棧頂是地址較小的一端棧頂是地址較小的一端(低端),棧底不變(低端),棧底不變第 3 章第 3 章堆棧和隊列堆棧:按照后進先堆棧:按照后進先出出(LIFO)(LIFO)的原則組織的原則組織的存儲器空間(棧)的存儲器空間(棧)隊列:按照先進先隊列:按照先進先出出(FIFO)(FIFO)的原則組織的原則組織的存儲器空間的存儲器空間LIFOFIFO第 3 章堆棧的操作堆棧只有兩種基本操作:進棧和堆棧只有兩種基本操作:進棧和出棧

24、,對應兩條指令出棧,對應兩條指令PUSH和和POPPUSHPUSH;進棧指令先使;進棧指令先使堆棧指針堆棧指針SPSP減減2 2,然后把一個字操然后把一個字操作數(shù)存入堆棧頂作數(shù)存入堆棧頂部部POPPOP;出棧指令把棧頂;出棧指令把棧頂?shù)囊粋€字傳送至指的一個字傳送至指定的目的操作數(shù),定的目的操作數(shù),然后堆棧指針然后堆棧指針SPSP加加2 2第 3 章第 3 章進棧指令進棧指令PUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/

25、seg第 3 章第 3 章出棧指令出棧指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2第 3 章堆棧的特點堆棧的特點堆棧操作的單位是字,進棧和出棧只對字量堆棧操作的單位是字,進棧和出棧只對字量字量數(shù)據(jù)從棧頂壓入和彈出時,都是低地址字量數(shù)據(jù)從棧頂壓入和彈出時,都是低地址字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)字節(jié)送低字節(jié),高地址字節(jié)送高字節(jié)堆棧操作遵循先進后出原則,但可用存儲器堆棧操作遵循先進后出原則,但可用存儲器尋址方式隨機存取堆棧

26、中的數(shù)據(jù)尋址方式隨機存取堆棧中的數(shù)據(jù)堆棧常用來堆棧常用來n臨時存放數(shù)據(jù)臨時存放數(shù)據(jù)n傳遞參數(shù)傳遞參數(shù)n保存和恢復寄存器保存和恢復寄存器例題例題10第 3 章例例10:現(xiàn)場保護恢復:現(xiàn)場保護恢復push axpush ax;進入子程序后;進入子程序后push bxpush bxpush dspush ds.pop dspop ds;返回主程序前;返回主程序前pop bxpop bxpop axpop ax第 3 章3 交換指令交換指令XCHG(exchange)把兩個地方的數(shù)據(jù)進行互換把兩個地方的數(shù)據(jù)進行互換寄存器與寄存器之間對換數(shù)據(jù)寄存器與寄存器之間對換數(shù)據(jù)寄存器與存儲器之間對換數(shù)據(jù)寄存器與存

27、儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)不能在存儲器與存儲器之間對換數(shù)據(jù)XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem例題例題6例題例題5第 3 章XCHG指令例例5:寄存器間交換:寄存器間交換mov ax,1234hmov ax,1234h;ax=1234hax=1234hmov bx,5678hmov bx,5678h;bx=5678hbx=5678hxchg ax,bxxchg ax,bx;ax=5678hax=5678h,bx=1234hbx=1234hxchg ah,alxchg ah,al;ax=7856hax

28、=7856h例例6:寄存器與存儲器交換:寄存器與存儲器交換xchg ax,2000hxchg ax,2000h ;字交換;字交換;等同于;等同于 xchg 2000h,axxchg 2000h,axxchg al,2000h xchg al,2000h ;字節(jié)交換;字節(jié)交換;等同于;等同于 xchg 2000h,alxchg 2000h,al 第 3 章?lián)Q碼指令執(zhí)行前:換碼指令執(zhí)行前:在主存建立一個在主存建立一個字節(jié)量表格字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址表格首地址存放于存放于BXBX,ALAL存放相對表格首地址的存放相對表格首地址的位移量位移量換碼指令執(zhí)行后

29、:換碼指令執(zhí)行后:將將ALAL寄存器的內(nèi)容轉(zhuǎn)換為寄存器的內(nèi)容轉(zhuǎn)換為目標代碼目標代碼4. 換碼指令XLAT(translate)將將BX指定的緩沖區(qū)中、指定的緩沖區(qū)中、AL指定的位移指定的位移處的一個字節(jié)數(shù)據(jù)取出賦給處的一個字節(jié)數(shù)據(jù)取出賦給ALXLATXLAT;alds:bx+alalds:bx+al例題例題7第 3 章例例7:代碼轉(zhuǎn)換:代碼轉(zhuǎn)換mov bx,100hmov bx,100hmov al,03hmov al,03hxlatxlat 換碼指令沒有顯式的操作數(shù),但使用換碼指令沒有顯式的操作數(shù),但使用了了BX和和AL;因為換碼指令使用了隱含;因為換碼指令使用了隱含尋址方式尋址方式采用默認

30、操作數(shù)采用默認操作數(shù)第 3 章XLAT指令第 3 章4 輸入輸出指令輸入輸出指令8086通過輸入輸出指令與外設進行數(shù)據(jù)通過輸入輸出指令與外設進行數(shù)據(jù)交換;呈現(xiàn)給程序員的外設是交換;呈現(xiàn)給程序員的外設是端口端口(Port)即)即I/O地址地址8086用于尋址外設端口的地址線為用于尋址外設端口的地址線為16條,端口最多為條,端口最多為21665536(64K)個,)個,端口號為端口號為0000HFFFFH每個端口用于傳送一個字節(jié)的外設數(shù)據(jù)每個端口用于傳送一個字節(jié)的外設數(shù)據(jù)第 3 章輸入輸出尋址方式8086的端口有的端口有64K個,無需分段,個,無需分段,設計有兩種尋址方式設計有兩種尋址方式v直接尋

31、址直接尋址:只用于尋址:只用于尋址00HFFH前前256個端口,操作數(shù)個端口,操作數(shù)i8表示端口號表示端口號v間接尋址間接尋址:可用于尋址全部:可用于尋址全部64K個端個端口,口,DX寄存器的值就是端口號寄存器的值就是端口號對大于對大于FFH的端口只能采用間接尋的端口只能采用間接尋址方式址方式第 3 章輸入指令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間接尋址)間接尋

32、址)IN AX,i8IN AX,i8;字輸入:;字輸入:AXI/OAXI/O端口(端口(i8i8直接尋址)直接尋址)IN AX,DXIN AX,DX;字輸入:;字輸入:AXI/OAXI/O端口(端口(DXDX間接尋址)間接尋址)例題例題14第 3 章IN和OUT指令例例14:輸入字量:輸入字量;直接尋址,字節(jié)量輸入;直接尋址,字節(jié)量輸入in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;直接尋址,字量輸入;直接尋址,字量輸入in ax,20hin ax,20h;間接尋址,字量輸入;間接尋址,字量輸入mov dx,20hmov dx,20

33、hin ax,dxin ax,dx 兩段功能相同兩段功能相同 字量數(shù)據(jù)傳送實字量數(shù)據(jù)傳送實際上實現(xiàn)了連續(xù)的際上實現(xiàn)了連續(xù)的兩個端口地址的字兩個端口地址的字節(jié)量傳送節(jié)量傳送第 3 章輸出指令OUT將將CPU內(nèi)的內(nèi)的AL/AX數(shù)據(jù)傳送給外設數(shù)據(jù)傳送給外設OUT 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直接尋址)直接尋址)

34、OUT DX,AXOUT DX,AX;字輸出:;字輸出:I/OI/O端口端口AXAX(DXDX間接尋址)間接尋址)例題例題15第 3 章IN和OUT指令例例15:輸出字節(jié)量:輸出字節(jié)量;間接尋址,字節(jié)量輸出;間接尋址,字節(jié)量輸出mov dx,3fchmov dx,3fchmov al,80hmov al,80hout dx,alout dx,al第 3 章有效地址傳送指令LEA(load EA)將存儲器操作數(shù)的有效地址傳將存儲器操作數(shù)的有效地址傳送至指定的送至指定的16位寄存器中位寄存器中例題例題16LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EA

35、EA第 3 章LEA指令第 3 章例例16:獲取有效地址:獲取有效地址mov bx,0400hmov bx,0400hmov si,3chmov si,3chlea bx,bx+si+0f62hlea bx,bx+si+0f62h;BXBX0400h0400h003ch003ch0f62h0f62h139EH139EH 獲得主存單元的有效地址;不是物理地獲得主存單元的有效地址;不是物理地址,也不是該單元的內(nèi)容址,也不是該單元的內(nèi)容 可以實現(xiàn)計算功能可以實現(xiàn)計算功能第 3 章符號擴展指令(P110)CBWCBW;ALAL的符號擴展至的符號擴展至AHAH;如;如ALAL的最高有效位是的最高有效位是

36、0 0,則,則AHAH0000;ALAL的最高有效位為的最高有效位為1 1,則,則AHAHFFHFFH。ALAL不變不變CWDCWD;AXAX的符號擴展至的符號擴展至DXDX;如;如AXAX的最高有效位是的最高有效位是0 0,則,則DXDX0000;AXAX的最高有效位為的最高有效位為1 1,則,則DXDXFFFFHFFFFH。AXAX不變不變什么是符號擴展什么是符號擴展符號擴展指令常用于獲得倍長的數(shù)據(jù)符號擴展指令常用于獲得倍長的數(shù)據(jù) 不影響標志位不影響標志位例題例題3例題例題4第 3 章第 3 章符號擴展的概念符號擴展是指用一個操作數(shù)的符號位符號擴展是指用一個操作數(shù)的符號位(即最高位)形成另

37、一個操作數(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為為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)第 3 章例例3:符號擴展

38、:符號擴展mov al,80hmov al,80h;al=80hal=80hcbwcbw;ax=ff80hax=ff80hadd al,255add al,255;al=7fhal=7fhcbwcbw;ax=007fhax=007fh第 3 章例例4:AXBXcwdcwd;DX.AXAXDX.AXAXidiv bxidiv bx;AXDX.AXAXDX.AXBXBX 利用符號擴展指令得到除法指令所利用符號擴展指令得到除法指令所需要的倍長于除數(shù)的被除數(shù)需要的倍長于除數(shù)的被除數(shù) 對無符號數(shù)除法應該采用直接使高對無符號數(shù)除法應該采用直接使高8位或高位或高16位清位清0的方法,獲得倍長的的方法,獲得倍

39、長的被除數(shù)被除數(shù)第 3 章段寄存器指令LDS r16,memLDS r16,mem;r16memr16mem,;DSmem+2DSmem+2LDSLDS指令將主存中指令將主存中memmem指定的字送至指定的字送至r16r16,并將并將memmem的下一字送的下一字送DSDS寄存器寄存器LES r16,memLES r16,mem;r16memr16mem,;ESmem+2ESmem+2LESLES指令將主存中指令將主存中memmem指定的字送至指定的字送至r16r16,并將并將memmem的下一字送的下一字送ESES寄存器寄存器第 3 章第 3 章標志寄存器進出堆棧指令標志寄存器進出堆棧指令P

40、USHFPUSHF;SPSPSPSP2 2;SS:SPFLAGSSS:SPFLAGSPUSHFPUSHF指令將標志寄存指令將標志寄存器的內(nèi)容壓入堆棧,器的內(nèi)容壓入堆棧,同時棧頂指針同時棧頂指針SPSP減減2 2POPFPOPF;FLAGSSS:SPFLAGSSS:SP;SPSPSPSP2 2POPFPOPF指令將棧頂字單元指令將棧頂字單元內(nèi)容送標志寄存器,同內(nèi)容送標志寄存器,同時棧頂指針時棧頂指針SPSP加加2 2第 3 章第 3 章3.3.2 算術運算類指令算術運算類指令四則運算是計算機經(jīng)常進行的一種操四則運算是計算機經(jīng)常進行的一種操作。算術運算指令實現(xiàn)二進制(和十作。算術運算指令實現(xiàn)二進制

41、(和十進制)數(shù)據(jù)的四則運算進制)數(shù)據(jù)的四則運算請注意算術運算類指令請注意算術運算類指令對標志的影響對標志的影響n掌握:掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMPn熟悉:熟悉:MUL/IMUL、DIV/IDIVn理解理解:DAA/DAS、 AAA/ AAS/AAM/AAD第 3 章加法指令ADDADD指令將源與目的操作數(shù)相加,結(jié)指令將源與目的操作數(shù)相加,結(jié)果送到目的操作數(shù)果送到目的操作數(shù)ADD指令按狀態(tài)標志的定義相應設置指令按狀態(tài)標志的定義相應設置ADD reg,imm/reg/memADD reg,imm/reg/mem;regregregregimm/reg/me

42、mimm/reg/memADD mem,imm/regADD mem,imm/reg;memmemmemmemimm/regimm/reg例題例題a第 3 章加法指令例例a:加法運算:加法運算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhadd al,07hadd al,07h;al=02hal=02hmov word ptr 200h,4652hmov word ptr 200h,4652h;200h=4652h200h=4652hmov bx,1fehmov bx,1feh;bx=1fehbx=1fehadd al,bladd al,bl;al=00hal=00

43、hadd word ptr bx+2,0f0f0hadd word ptr bx+2,0f0f0h;200h=3742h200h=3742h第 3 章帶進位加法指令ADCADC指令將源與目的操作數(shù)相加,再加上進指令將源與目的操作數(shù)相加,再加上進位位CF標志,結(jié)果送到目的操作數(shù)標志,結(jié)果送到目的操作數(shù)ADC指令按狀態(tài)標志的定義相應設置指令按狀態(tài)標志的定義相應設置ADC指令主要與指令主要與ADD配合,實現(xiàn)多精度加法配合,實現(xiàn)多精度加法運算運算ADC reg,imm/reg/memADC reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFAD

44、C mem,imm/regADC mem,imm/reg;memmemmemmemimm/regimm/regCFCF例題例題b例例b:雙字加法:雙字加法mov ax,4652hmov ax,4652h;ax=4652hax=4652hadd ax,0f0f0hadd ax,0f0f0h ;ax=3742hax=3742h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hadc dx,0f0f0hadc dx,0f0f0h ;dx=f325hdx=f325h,CF=0CF=0;DX.AXDX.AX0234 4652H0234 4652HF0F0

45、 F0F0HF0F0 F0F0HF325 3742HF325 3742H第 3 章增量指令INC(increment)INC指令對操作數(shù)加指令對操作數(shù)加1(增量)(增量)INC指令不影響進位指令不影響進位CF標志,按標志,按定義設置其他狀態(tài)標志定義設置其他狀態(tài)標志INC reg/memINC reg/mem;reg/memreg/memreg/memreg/mem1 1inc bxinc bx第 3 章減法指令SUB(subtract)SUB指令將目的操作數(shù)減去源操作數(shù),指令將目的操作數(shù)減去源操作數(shù),結(jié)果送到目的操作數(shù)結(jié)果送到目的操作數(shù)SUB指令按照定義相應設置狀態(tài)標志指令按照定義相應設置狀態(tài)

46、標志SUB reg,imm/reg/memSUB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB mem,imm/regSUB mem,imm/reg;memmemmemmemimm/regimm/reg例題例題c第 3 章減法指令例例c:減法運算:減法運算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

47、=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=5562h200h=5562h,CFCF1 1第 3 章帶借位減法指令SBBSBB指令將目的操作數(shù)減去源操作數(shù),再減指令將目的操作數(shù)減去源操作數(shù),再減去借位去借位CF(進位),結(jié)果送到目的操作數(shù)。(進位),結(jié)果送到目的操作數(shù)。SBB指令按照定義相應設置狀態(tài)標志指令按照定義相應設置狀態(tài)標志SBB指令主要與指令主要與SUB配合,實現(xiàn)多精度減法

48、配合,實現(xiàn)多精度減法運算運算SBB reg,imm/reg/memSBB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFSBB mem,imm/regSBB mem,imm/reg;memmemmemmemimm/regimm/regCFCF例題例題d例例d:雙字減法:雙字減法mov ax,4652hmov ax,4652h;ax=4652hax=4652hsub ax,0f0f0hsub ax,0f0f0h ;ax=5562hax=5562h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=

49、0234hsbb dx,0f0f0hsbb dx,0f0f0h ;dx=1143hdx=1143h,CF=1CF=1;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0H1143 5562H1143 5562H第 3 章減量指令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

50、ptr sidec word ptr si INC指令和指令和DEC指令都是單操作數(shù)指令指令都是單操作數(shù)指令 主要用于對計數(shù)器和地址指針的調(diào)整主要用于對計數(shù)器和地址指針的調(diào)整第 3 章求補指令NEG(negative)NEG指令對操作數(shù)執(zhí)行求補運算:用指令對操作數(shù)執(zhí)行求補運算:用零減去操作數(shù),然后結(jié)果返回操作數(shù)零減去操作數(shù),然后結(jié)果返回操作數(shù)求補運算也可以表達成:將操作數(shù)按求補運算也可以表達成:將操作數(shù)按位取反后加位取反后加1NEG指令對標志的影響與用零作減法指令對標志的影響與用零作減法的的SUB指令一樣指令一樣NEG reg/memNEG reg/mem;reg/mem0reg/mem0re

51、g/memreg/mem第 3 章例例e:求補運算:求補運算mov ax,0ff64hmov ax,0ff64hneg alneg al;ax=ff9chax=ff9ch,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=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;a

52、x=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=1、CF=0CF=0第 3 章例例e:求補運算:求補運算 LEA SI,AREA1 LEA SI,AREA1 LEA DI,AREA2 LEA DI,AREA2 MOV CX,100 MOV CX,100CHECK: MOV AL,SICHECK: MOV AL,SI OR AL,AL OR AL,AL JNS NEXT JNS NEXT NEG A

53、L NEG ALNEXT: MOV DI,ALNEXT: MOV DI,AL INC SI INC SI INC DI INC DI DEC CX DEC CX JNZ CHECK JNZ CHECK HLT HLT第 3 章比較指令CMP(compare)CMP指令將目的操作數(shù)減去源操作數(shù),指令將目的操作數(shù)減去源操作數(shù),按照定義相應設置狀態(tài)標志按照定義相應設置狀態(tài)標志CMP指令執(zhí)行的功能與指令執(zhí)行的功能與SUB指令,但指令,但結(jié)果不回送目的操作數(shù)結(jié)果不回送目的操作數(shù)CMP reg,imm/reg/memCMP reg,imm/reg/mem;regregimm/reg/memimm/reg/

54、memCMP mem,imm/regCMP mem,imm/reg;memmemimm/regimm/reg例題例題f第 3 章例例f:比較:比較AL與與100cmp al,100cmp al,100;al-100al-100jb belowjb below;al100al100,跳轉(zhuǎn)到,跳轉(zhuǎn)到belowbelow執(zhí)行執(zhí)行sub al,100sub al,100;al100al100,alal-100alal-100inc ahinc ah;ahah+1ahah+1below:below: . 執(zhí)行比較指令之后,可以根據(jù)標志執(zhí)行比較指令之后,可以根據(jù)標志判斷兩個數(shù)是否相等、大小關系等判斷兩個數(shù)

55、是否相等、大小關系等第 3 章例例e:求補運算:求補運算 MOV BX,OFFSET BLOCK MOV BX,OFFSET BLOCK MOV AX,BX MOV AX,BX INC BX INC BX INC BX INC BX MOV CX,99 MOV CX,99AGAIN: CMP AX,BXAGAIN: CMP AX,BX JG NEXT JG NEXT MOV AX,BX MOV AX,BXNEXT: INC BXNEXT: INC BX INC BX INC BX DEC CX DEC CX JNZ AGAIN JNZ AGAIN MOV MAX,AX MOV MAX,AX H

56、LT HLT乘法指令MUL r8/m8MUL r8/m8;無符號字節(jié)乘法;無符號字節(jié)乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;無符號字乘法;無符號字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符號字節(jié)乘法;有符號字節(jié)乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符號字乘法;有符號字乘法;DX.AXAXDX.AXAXr16/m16r16/m16例題例題1第 3 章第 3 章乘法指令的功能乘法指令乘法指令分無符號和有符號乘法指令分無符號和有符號

57、乘法指令乘法指令的源操作數(shù)顯式給出,乘法指令的源操作數(shù)顯式給出,隱含隱含使用另一個操作數(shù)使用另一個操作數(shù)AX和和DXn字節(jié)量相乘:字節(jié)量相乘:AL與與r8/m8相乘,得到相乘,得到16位位的結(jié)果,存入的結(jié)果,存入AXn字量相乘:字量相乘:AX與與r16/m16相乘,得到相乘,得到32位的結(jié)果,其高字存入位的結(jié)果,其高字存入DX,低字存入,低字存入AX乘法指令利用乘法指令利用OF和和CF判斷乘積的高一判斷乘積的高一半是否具有有效數(shù)值半是否具有有效數(shù)值第 3 章乘法指令對標志的影響乘法指令如下影響乘法指令如下影響OF和和CF標志:標志:nMUL指令指令若乘積的高一半(若乘積的高一半(AH或或DX)

58、為為0,則,則OF=CF=0;否則;否則OF=CF=1nIMUL指令指令若乘積的高一半是低一半若乘積的高一半是低一半的符號擴展,則的符號擴展,則OF=CF=0;否則均為;否則均為1乘法指令對其他狀態(tài)標志乘法指令對其他狀態(tài)標志沒有定義沒有定義 對標志沒有定義:指令執(zhí)行后這些標志是任對標志沒有定義:指令執(zhí)行后這些標志是任意的、不可預測(就是誰也不知道是意的、不可預測(就是誰也不知道是0還是還是1) 對標志沒有影響:指令執(zhí)行不改變標志狀態(tài)對標志沒有影響:指令執(zhí)行不改變標志狀態(tài)例例1:乘法運算:乘法運算mov al,0b4hmov al,0b4h;al=b4h=180al=b4h=180mov bl,

59、11hmov bl,11h;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ù)字除法指令DIV r8/m8DIV r8/m8;無符號字節(jié)除法:;無符號字節(jié)

60、除法: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/m8的余數(shù)的余數(shù)IDIV r16/m16IDIV r16/m16;有符號字除法:;有符號字除法:;AXDX.AXAXDX.AXr

溫馨提示

  • 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

提交評論