第3講-指令系統(tǒng)(1)_第1頁
第3講-指令系統(tǒng)(1)_第2頁
第3講-指令系統(tǒng)(1)_第3頁
第3講-指令系統(tǒng)(1)_第4頁
第3講-指令系統(tǒng)(1)_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第 3 章 這部分是本課程的一個關(guān)鍵這部分是本課程的一個關(guān)鍵 內(nèi)容,是程序設(shè)計的基礎(chǔ)內(nèi)容,是程序設(shè)計的基礎(chǔ) 基礎(chǔ)基礎(chǔ)是熟悉寄存器組是熟悉寄存器組 難點難點是各種尋址方式是各種尋址方式 重點重點是掌握是掌握8086常用常用 指令的功能及應用指令的功能及應用 計劃學時數(shù):4/96 第 3 章 什么是指令系統(tǒng) n計算機的指令系統(tǒng)就是指該計算機能夠計算機的指令系統(tǒng)就是指該計算機能夠 執(zhí)行的全部指令的集合執(zhí)行的全部指令的集合 n每種計算機都有它支持的指令集合每種計算機都有它支持的指令集合 n1616位位80868086指令系統(tǒng)是指令系統(tǒng)是Intel 80 x86Intel 80 x86系列微系列微 處

2、理器指令系統(tǒng)的基礎(chǔ)處理器指令系統(tǒng)的基礎(chǔ) 一定要在調(diào)試環(huán)境中多一定要在調(diào)試環(huán)境中多實踐實踐 第 3 章 3.1 8086的寄存器組 n對程序員來說,對程序員來說,8086內(nèi)部結(jié)構(gòu)的最重要內(nèi)部結(jié)構(gòu)的最重要 的是其寄存器組的是其寄存器組 v 8個通用寄存器個通用寄存器 v 1個指令指針寄存器個指令指針寄存器 v 1個標志寄存器個標志寄存器 v 4個段寄存器個段寄存器 第 3 章 3.1.1 8086的通用寄存器 n8086的的16位通用寄存器是:位通用寄存器是: AXBXCXDX SIDIBPSP n其中前其中前4個數(shù)據(jù)寄存器都還可以分成高個數(shù)據(jù)寄存器都還可以分成高8位和低位和低 8位兩個獨立的寄存

3、器位兩個獨立的寄存器 n8086的的8位通用寄存器是:位通用寄存器是: AHBHCHDH ALBLCLDL n對其中某對其中某8位的操作,并不影響另外對應位的操作,并不影響另外對應8位的位的 數(shù)據(jù)數(shù)據(jù) 第 3 章 數(shù)據(jù)寄存器 n數(shù)據(jù)寄存器用來存放計算的結(jié)果和操作數(shù),也數(shù)據(jù)寄存器用來存放計算的結(jié)果和操作數(shù),也 可以存放地址可以存放地址 n每個寄存器又有它們各自的專用目的每個寄存器又有它們各自的專用目的 nAX累加器,使用頻度最高,用于算術(shù)、邏輯運累加器,使用頻度最高,用于算術(shù)、邏輯運 算以及與外設(shè)傳送信息等;算以及與外設(shè)傳送信息等; nBX基址寄存器,常用做存放存儲器地址;基址寄存器,常用做存放

4、存儲器地址; nCX計數(shù)器,作為循環(huán)和串操作等指令中的隱含計數(shù)器,作為循環(huán)和串操作等指令中的隱含 計數(shù)器;計數(shù)器; nDX數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高 16位,或存放外設(shè)端口地址。位,或存放外設(shè)端口地址。 第 3 章 變址寄存器 n變址寄存器常用于存儲器尋址時提供地變址寄存器常用于存儲器尋址時提供地 址址 nSI是源變址寄存器是源變址寄存器 nDI是目的變址寄存器是目的變址寄存器 n串操作類指令中,串操作類指令中,SI和和DI具有特別的功具有特別的功 能能 第 3 章 指針寄存器 n指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)

5、 nSPSP為堆棧指針寄存器,指示棧頂?shù)钠频刂窞槎褩V羔樇拇嫫?,指示棧頂?shù)钠频刂?nSPSP不能再用于其他目的,具有專用目的不能再用于其他目的,具有專用目的 nBPBP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的 基地址基地址 nSPSP和和BPBP寄存器與寄存器與SSSS段寄存器聯(lián)合使用以確定堆段寄存器聯(lián)合使用以確定堆 棧段中的存儲單元地址棧段中的存儲單元地址 第 3 章 堆棧(Stack) n堆棧是主存中一個特殊的區(qū)域堆棧是主存中一個特殊的區(qū)域 n它采用它采用(First In Last OutFirst In Last Out) 或后進先出或后進先出L

6、IFOLIFO(Last In First OutLast In First Out)的原)的原 則進行存取操作,而不是隨機存取操作方式。則進行存取操作,而不是隨機存取操作方式。 n堆棧通常由處理器自動維持。在堆棧通常由處理器自動維持。在80868086中,由堆中,由堆 棧段寄存器棧段寄存器SSSS和堆棧指針寄存器和堆棧指針寄存器SPSP共同指示,共同指示, SSSS指定堆棧的起始位置,指定堆棧的起始位置,SPSP指向棧頂指向棧頂。 n80868086中的堆棧為中的堆棧為向下生長型向下生長型,即,即進棧進棧時時SPSP指針指針 遞遞減減,出棧出棧時時SPSP指針遞指針遞增增。 第 3 章 指令

7、指針I(yè)P n指令指針寄存器指令指針寄存器IP,指示代碼段中指令的偏移,指示代碼段中指令的偏移 地址地址 n它與代碼段寄存器它與代碼段寄存器CS聯(lián)用,確定下一條指令聯(lián)用,確定下一條指令 的物理地址的物理地址 n計算機通過計算機通過CS : IP寄存器來控制指令序列的寄存器來控制指令序列的 執(zhí)行流程執(zhí)行流程 nIP寄存器是一個專用寄存器寄存器是一個專用寄存器 第 3 章 3.1.2 標志寄存器 n標志(標志(Flag)用于反映指令執(zhí)行結(jié)果或)用于反映指令執(zhí)行結(jié)果或 控制指令執(zhí)行形式控制指令執(zhí)行形式(分兩類) n8086處理器的各種標志形成了一個處理器的各種標志形成了一個16 位的標志寄存器位的標志

8、寄存器FLAGS(程序狀態(tài)字(程序狀態(tài)字 PSW寄存器)寄存器) OF 11 . 15 12 DF 10 IF 9 TF 8 SF 7 ZF 65 AF 43 PF 21 CF 0 程序設(shè)計需要利用標志的狀態(tài)程序設(shè)計需要利用標志的狀態(tài) 第 3 章 進位標志CF(Carry Flag) n當運算結(jié)果的最高有效位有進位(加法)或借當運算結(jié)果的最高有效位有進位(加法)或借 位(減法)時,進位標志置位(減法)時,進位標志置1,即,即CF = 1;否;否 則則CF = 0。 3AH + 7CHB6H,沒有進位:,沒有進位:CF = 0 AAH + 7CH(1)26H,有進位:,有進位:CF = 1 第

9、3 章 零標志ZF(Zero Flag) n若運算結(jié)果為若運算結(jié)果為0,則,則ZF = 1; 否則否則ZF = 0 3AH + 7CHB6H,結(jié)果不是零:,結(jié)果不是零:ZF = 0 84H + 7CH(1)00H,結(jié)果是零:,結(jié)果是零:ZF = 1 注意:注意:ZF為為1表示的結(jié)果是表示的結(jié)果是0 第 3 章 符號標志SF(Sign Flag) n運算結(jié)果最高位為運算結(jié)果最高位為1,則,則SF = 1;否則;否則 SF = 0 3AH + 7CHB6H,最高位,最高位D71:SF = 1 84H + 7CH(1)00H,最高位,最高位D70:SF = 0 有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號,

10、有符號數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號, 所以,最高有效位就是符號標志的狀態(tài)所以,最高有效位就是符號標志的狀態(tài) 第 3 章 奇偶標志PF(Parity Flag) n當運算結(jié)果最低字節(jié)中當運算結(jié)果最低字節(jié)中“1”1”的個數(shù)為零的個數(shù)為零 或偶數(shù)時,或偶數(shù)時,PF = 1PF = 1;否則;否則PF = 0(PF = 0(奇校驗奇校驗) ) 3AH + 7CHB6H10110110B 結(jié)果中有結(jié)果中有5個個1,是奇數(shù):,是奇數(shù):PF = 0 PF標志僅反映最低標志僅反映最低8位中位中“1”的個數(shù)是的個數(shù)是 偶或奇,即使是進行偶或奇,即使是進行16位字操作位字操作 第 3 章 溢出標志OF(Over

11、flow Flag) n若算術(shù)運算的結(jié)果有溢出,若算術(shù)運算的結(jié)果有溢出, 則則OFOF1 1;否則;否則 OFOF0 0 3AH + 7CHB6H,產(chǎn)生溢出:,產(chǎn)生溢出:OF = 1 AAH + 7CH(1)26H,沒有溢出:,沒有溢出:OF = 0 問題問題 什么是溢出?什么是溢出? 溢出和進位有什么區(qū)別?溢出和進位有什么區(qū)別? 處理器怎么處理,如何運用?處理器怎么處理,如何運用? 如何判斷是否溢出?如何判斷是否溢出? 第 3 章 輔助進位標志AF(Auxiliary Carry Flag) 3AH + 7CHB6H,D3有進位:有進位:AF = 1 運算時運算時D D3 3位(低半字節(jié))有

12、進位或位(低半字節(jié))有進位或 借位時,借位時,AF = 1AF = 1;否則;否則AF = 0AF = 0。 這個標志主要由處理器內(nèi)部使用,這個標志主要由處理器內(nèi)部使用, 用于十進制算術(shù)運算調(diào)整指令中,用用于十進制算術(shù)運算調(diào)整指令中,用 戶一般不必關(guān)心戶一般不必關(guān)心 第 3 章 方向標志DF(Direction Flag) n用于串操作指令中,控制地址的變化方 向: n設(shè)置設(shè)置DFDF0 0,存儲器地址自動增加;,存儲器地址自動增加; 設(shè)置設(shè)置DFDF1 1,存儲器地址自動減少。,存儲器地址自動減少。 CLDCLD指令復位方向標志:指令復位方向標志:DFDF0 0 STDSTD指令置位方向標志

13、:指令置位方向標志:DFDF1 1 第 3 章 中斷允許標志IF(Interrupt-enable Flag) n用于控制外部可屏蔽中斷是否可以被處用于控制外部可屏蔽中斷是否可以被處 理器響應:理器響應: n設(shè)置IF1,則允許中斷; 設(shè)置IF0,則禁止中斷。 CLICLI指令復位中斷標志:指令復位中斷標志:IFIF0 0 STISTI指令置位中斷標志:指令置位中斷標志:IFIF1 1 第 3 章 陷阱標志TF(Trap Flag) n用于控制處理器進入單步操作方式:用于控制處理器進入單步操作方式: n設(shè)置TF0,處理器正常工作; 設(shè)置TF1,處理器單步執(zhí)行指令。 單步執(zhí)行指令單步執(zhí)行指令處理器

14、在處理器在每條指令執(zhí)行結(jié)每條指令執(zhí)行結(jié) 束束時,便產(chǎn)生一個編號為時,便產(chǎn)生一個編號為1 1的內(nèi)部中斷的內(nèi)部中斷 這種內(nèi)部中斷稱為這種內(nèi)部中斷稱為單步中斷單步中斷 所以所以TFTF也稱為也稱為單步標志單步標志 n利用單步中斷可對程序進行逐條指令的調(diào)試利用單步中斷可對程序進行逐條指令的調(diào)試 n這種逐條指令調(diào)試程序的方法就是這種逐條指令調(diào)試程序的方法就是單步調(diào)試單步調(diào)試 第 3 章 3.1.3 存儲器組織與段寄存器 n寄存器是微處理器內(nèi)部暫存數(shù)據(jù)的存儲寄存器是微處理器內(nèi)部暫存數(shù)據(jù)的存儲 單元,以名稱表示單元,以名稱表示 n存儲器則是微處理器外部存放程序及其存儲器則是微處理器外部存放程序及其 數(shù)據(jù)的空

15、間數(shù)據(jù)的空間 n程序及其數(shù)據(jù)可以長久存放在外存,在程序及其數(shù)據(jù)可以長久存放在外存,在 程序需要時才進入主存程序需要時才進入主存 n主存需要利用地址區(qū)別主存需要利用地址區(qū)別 第 3 章 數(shù)據(jù)信息的表達單位 n計算機中信息的單位計算機中信息的單位 n二進制位Bit:存儲一位二進制數(shù):0或1 n字節(jié)Byte:8個二進制位,D7D0 n字Word:16位,2個字節(jié),D15D0 n雙字DWord:32位,4個字節(jié),D31D0 n最低有效位最低有效位LSBLSB:數(shù)據(jù)的最低位,:數(shù)據(jù)的最低位,D D0 0位位 n最高有效位最高有效位MSBMSB:數(shù)據(jù)的最高位,對應字節(jié)、:數(shù)據(jù)的最高位,對應字節(jié)、 字、雙字

16、分別指字、雙字分別指D D7 7、D D15 15、 、D D31 31位 位 第 3 章 存儲單元及其存儲內(nèi)容 n每個存儲單元都有一個編號;被每個存儲單元都有一個編號;被 稱為稱為存儲器地址存儲器地址 n每個存儲單元存放每個存儲單元存放一個字節(jié)一個字節(jié)的內(nèi)的內(nèi) 容容 0002H0002H單元存放有一個數(shù)據(jù)單元存放有一個數(shù)據(jù)34H34H 表達為表達為0002H0002H34H34H 第 3 章 多字節(jié)數(shù)據(jù)存放方式 n多字節(jié)數(shù)據(jù)在存儲器中占多字節(jié)數(shù)據(jù)在存儲器中占連續(xù)的多個存儲單元連續(xù)的多個存儲單元: n存放時,低字節(jié)存入低地址,高字節(jié)存入高地址低字節(jié)存入低地址,高字節(jié)存入高地址; n表達時,用它

17、的低地址表示低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址 空間。 圖中圖中2 2號號“字字”單元的內(nèi)容為:單元的內(nèi)容為: 0002H = 1234H0002H = 1234H 2 2號號“雙字雙字”單元的內(nèi)容為:單元的內(nèi)容為: 0002H = 78561234H0002H = 78561234H 第 3 章 數(shù)據(jù)的地址對齊 n同一個同一個存儲器地址存儲器地址可以是字節(jié)單元地可以是字節(jié)單元地 址、字單元地址、雙字單元地址等等址、字單元地址、雙字單元地址等等 n字單元安排在偶地址(字單元安排在偶地址(xxx0Bxxx0B)、雙字)、雙字 單元安排在模單元安排在模4 4地址(地址(xx00Bxx00B)等,被稱)

18、等,被稱 為為“地址對齊地址對齊(AlignAlign)” n對于不對齊地址的數(shù)據(jù),處理器訪問對于不對齊地址的數(shù)據(jù),處理器訪問 時,需要額外的訪問存儲器時間時,需要額外的訪問存儲器時間 n應該將數(shù)據(jù)的地址對齊,以取得較高應該將數(shù)據(jù)的地址對齊,以取得較高 的存取速度的存取速度 視具體情況來確定視具體情況來確定 第 3 章 存儲器的分段管理 n8086CPU8086CPU有有2020條地址線條地址線 n最大可尋址空間為2201MB n物理地址范圍從00000HFFFFFH n8086CPU8086CPU將將1MB1MB空間分成許多空間分成許多邏輯段(邏輯段(SegmentSegment) n每個段

19、最大限制為64KB n段地址的低4位為0000B n這樣,一個存儲單元除具有一個唯一的這樣,一個存儲單元除具有一個唯一的物理地 址外,還具有多個外,還具有多個邏輯地址 第 3 章 物理地址和邏輯地址 n對應每個物理存儲單元都有一個對應每個物理存儲單元都有一個唯一唯一的的 20位編號,就是物理地址,從位編號,就是物理地址,從00000H FFFFFH。CPU以物理地址訪問存儲單元。以物理地址訪問存儲單元。 n分段后在用戶編程時,采用邏輯地址,分段后在用戶編程時,采用邏輯地址, 形式為形式為 段基地址 : : 段內(nèi)偏移地址 分隔符分隔符 第 3 章 邏輯地址 n段地址說明邏輯段在主存中的起始位置說

20、明邏輯段在主存中的起始位置 n8086規(guī)定段地址必須是模規(guī)定段地址必須是模16地址:地址:xxxx0H n省略低省略低4位位0000B,段地址就可以用,段地址就可以用16位數(shù)據(jù)位數(shù)據(jù) 表示,就能用表示,就能用16位位段寄存器表達段地址表達段地址 n偏移地址說明主存單元距離段起始位置的偏移說明主存單元距離段起始位置的偏移 量量 n每段不超過每段不超過64KB,偏移地址也可用,偏移地址也可用16位位數(shù)據(jù)數(shù)據(jù) 表示表示 第 3 章 物理地址和邏輯地址的轉(zhuǎn)換 n將邏輯地址中的段地址左移將邏輯地址中的段地址左移4 4位,加上偏位,加上偏 移地址就得到移地址就得到2020位物理地址位物理地址 n一個物理地

21、址可以有多個邏輯地址一個物理地址可以有多個邏輯地址 邏輯地址邏輯地址 1460:1001460:100、1380:F001380:F00 物理地址物理地址 14700H 14700H14700H 14700H 146014600 0H H 100H100H 14700H14700H 138013800 0H H F00HF00H 14700H14700H 段地址左移段地址左移4 4位位 加上偏移地址加上偏移地址 得到物理地址得到物理地址 第 3 章 段寄存器和邏輯段 n8086有有4個個16位段寄存器位段寄存器 nCS(代碼段)指明代碼段的起始地址 nSS(堆棧段)指明堆棧段的起始地址 nDS

22、(數(shù)據(jù)段)指明數(shù)據(jù)段的起始地址 nES(附加段)指明附加段的起始地址 n每個段寄存器用來確定一個邏輯段的起每個段寄存器用來確定一個邏輯段的起 始地址,每種邏輯段均有各自的用途始地址,每種邏輯段均有各自的用途 第 3 章 如何分配各個邏輯段 n程序的程序的指令序列必須安排在必須安排在代碼段代碼段 n程序使用的程序使用的堆棧一定在一定在堆棧段堆棧段 n程序中的程序中的數(shù)據(jù)默認是安排在默認是安排在數(shù)據(jù)段數(shù)據(jù)段,也,也 經(jīng)常安排在經(jīng)常安排在附加段附加段,尤其是串操作的目,尤其是串操作的目 的區(qū)必須是附加段的區(qū)必須是附加段 n數(shù)據(jù)的存放比較靈活,實際上可以存放數(shù)據(jù)的存放比較靈活,實際上可以存放 在任何一

23、種邏輯段中在任何一種邏輯段中 第 3 章 段跨越前綴指令 n沒有指明時,一般的數(shù)據(jù)訪問在沒有指明時,一般的數(shù)據(jù)訪問在DSDS段;段; 使用使用BPBP訪問主存,則在訪問主存,則在SSSS段段 n默認的情況允許改變,需要使用段跨越默認的情況允許改變,需要使用段跨越 前綴指令;前綴指令;80868086指令系統(tǒng)中有指令系統(tǒng)中有4 4個:個: CS:;代碼段跨越,使用代碼段的數(shù)據(jù) SS: ;堆棧段跨越,使用堆棧段的數(shù)據(jù) DS: ;數(shù)據(jù)段跨越,使用數(shù)據(jù)段的數(shù)據(jù) ES: ;附加段跨越,使用附加段的數(shù)據(jù) 第 3 章 段跨越的示例 n沒有段跨越的指令實例:沒有段跨越的指令實例: MOV AX,2000HMO

24、V AX,2000H ;AXDS:2000HAXDS:2000H ;從默認的DS數(shù)據(jù)段取出數(shù)據(jù) n采用段跨越前綴的指令實例:采用段跨越前綴的指令實例: MOV AX,ES:2000HMOV AX,ES:2000H;AXES:2000HAXES:2000H ;從指定的ES附加段取出數(shù)據(jù) 第 3 章 段寄存器的使用規(guī)定 訪問存儲器的方式訪問存儲器的方式默認默認可跨越可跨越偏移地址偏移地址 取指令取指令CSCS無無IPIP 堆棧操作堆棧操作SSSS無無SPSP 一般數(shù)據(jù)訪問一般數(shù)據(jù)訪問DSDSCS ES SSCS ES SS有效地址有效地址EAEA BPBP基址的尋址方式基址的尋址方式SSSSCS

25、ES DSCS ES DS有效地址有效地址EAEA 串操作的源操作數(shù)串操作的源操作數(shù)DSDSCS ES SSCS ES SSSISI 串操作的目的操作數(shù)串操作的目的操作數(shù)ESES無無DIDI 第 3 章 存儲器的分段 n8086對邏輯段對邏輯段要求要求: n段地址低4位均為0 n每段最大不超過64KB n8086對邏輯段并對邏輯段并不要求不要求: n必須是64KB n各段之間完全分開(即可以重疊) 第 3 章 3.1節(jié)的總結(jié) n8086有有8個個8位通用寄存器、位通用寄存器、8個個16位通用寄位通用寄 存器存器 n8086有有6個狀態(tài)標志和個狀態(tài)標志和3個控制標志個控制標志 n8086將將1M

26、B存儲空間分段管理,有存儲空間分段管理,有4個段寄個段寄 存器,對應存器,對應4種邏輯段種邏輯段 n8086有有4個段超越前綴指令,用于明確指定數(shù)個段超越前綴指令,用于明確指定數(shù) 據(jù)所在的邏輯段據(jù)所在的邏輯段 熟悉上述內(nèi)容后,就可以進入下節(jié)熟悉上述內(nèi)容后,就可以進入下節(jié) 第 3 章 3.2 8086的尋址方式 n從從8086的機器代碼格式入手,論述:的機器代碼格式入手,論述: n立即數(shù)尋址方式立即數(shù)尋址方式 n寄存器尋址方式寄存器尋址方式 n存儲器尋址方式存儲器尋址方式 n進而熟悉進而熟悉8086匯編語言指令格式,尤其匯編語言指令格式,尤其 是其中是其中操作數(shù)的表達方法操作數(shù)的表達方法;為展開

27、;為展開8086 指令系統(tǒng)做好準備指令系統(tǒng)做好準備 第 3 章 指令的組成 n指令由操作碼和操作數(shù)兩部分組成指令由操作碼和操作數(shù)兩部分組成 n操作碼操作碼說明計算機要執(zhí)行哪種操作,如傳送、說明計算機要執(zhí)行哪種操作,如傳送、 運算、移位、跳轉(zhuǎn)等操作,它是指令中不可運算、移位、跳轉(zhuǎn)等操作,它是指令中不可 缺少的組成部分缺少的組成部分 n操作數(shù)操作數(shù)(地址碼地址碼)是指令執(zhí)行的參與者,即各是指令執(zhí)行的參與者,即各 種操作的對象種操作的對象 n有些指令不需要操作數(shù),通常的指令都有一有些指令不需要操作數(shù),通常的指令都有一 個或兩個操作數(shù),也有個別指令有個或兩個操作數(shù),也有個別指令有3個甚至個甚至 4個操

28、作數(shù)個操作數(shù) 操作碼操作碼操作數(shù)操作數(shù) 第 3 章 指令的操作碼和操作數(shù) n每種指令的每種指令的操作碼操作碼: n用一個唯一的助記符表示(指令功能的英文用一個唯一的助記符表示(指令功能的英文 縮寫)縮寫) n對應著機器指令的一個二進制編碼對應著機器指令的一個二進制編碼 n指令中的指令中的操作數(shù)操作數(shù): n可以是一個具體的數(shù)值可以是一個具體的數(shù)值 n可以是存放數(shù)據(jù)的寄存器可以是存放數(shù)據(jù)的寄存器 n或指明數(shù)據(jù)在主存位置的存儲器地址或指明數(shù)據(jù)在主存位置的存儲器地址 第 3 章 尋址方式 n指令系統(tǒng)設(shè)計了多種操作數(shù)的來源指令系統(tǒng)設(shè)計了多種操作數(shù)的來源 n尋找操作數(shù)的過程就是操作數(shù)的尋址尋找操作數(shù)的過程

29、就是操作數(shù)的尋址 n操作數(shù)采取哪一種尋址方式,會影響機操作數(shù)采取哪一種尋址方式,會影響機 器運行的速度和效率器運行的速度和效率 如何尋址一個操作數(shù)對程序設(shè)計很重要如何尋址一個操作數(shù)對程序設(shè)計很重要 第 3 章 給出立即尋址方式需要的數(shù)值本身給出立即尋址方式需要的數(shù)值本身 給出某些尋址方式需要的對基地址的偏移量給出某些尋址方式需要的對基地址的偏移量 3.2.1 8086的機器代碼格式 表明采用的尋址方式表明采用的尋址方式(見見P48表表3.13.3) 1/2字節(jié)字節(jié)0/1字節(jié)字節(jié)0/1/2字節(jié)字節(jié)0/1/2字節(jié)字節(jié) 操作碼操作碼mod reg r/m位移量位移量立即數(shù)立即數(shù) 操作數(shù)操作數(shù) 第 3

30、 章 標準機器代碼示例 mov ax,BP+0 ;機器代碼是;機器代碼是 8B 46 00 n前一個字節(jié)前一個字節(jié)8B是操作碼(含是操作碼(含w1表示字操作)表示字操作) n中間一個字節(jié)中間一個字節(jié)46(01 000 110)是)是 “mod reg r/m”字節(jié)字節(jié) nreg000表示目的操作數(shù)為AX nmod01和r/m110表示源操作數(shù)為BP+D8 n最后一個字節(jié)就是最后一個字節(jié)就是8位位移量位位移量D800 1/2字節(jié)字節(jié)0/1字節(jié)字節(jié)0/1/2字節(jié)字節(jié)0/1/2字節(jié)字節(jié) 操作碼操作碼mod reg r/m位移量位移量立即數(shù)立即數(shù) 第 3 章 其它機器代碼形式 mov al,05 ;機

31、器代碼是;機器代碼是B0 05 n前一個字節(jié)前一個字節(jié)B0是操作碼(含一個操作是操作碼(含一個操作 數(shù)數(shù)AL),后一個字節(jié)),后一個字節(jié)05是立即數(shù)是立即數(shù) mov ax,0102H ;機器代碼是;機器代碼是B8 02 01 n前一個字節(jié)前一個字節(jié)B8是操作碼(含一個操作是操作碼(含一個操作 數(shù)數(shù)AX),后兩個字節(jié)),后兩個字節(jié)02 01是是16位立位立 即數(shù)(低字節(jié)即數(shù)(低字節(jié)02在低地址)在低地址) 操作碼操作碼操作數(shù)操作數(shù) 第 3 章 指令的助記符格式 操作碼操作碼 操作數(shù)操作數(shù)1 1, ,操作數(shù)操作數(shù)2 2;注釋注釋 n操作數(shù)操作數(shù)2 2,稱為,稱為源操作數(shù)源操作數(shù) srcsrc,它表

32、示參,它表示參 與指令操作的一個對象與指令操作的一個對象 n操作數(shù)操作數(shù)1 1,稱為,稱為目的操作數(shù)目的操作數(shù) destdest,它不,它不 僅可以作為指令操作的一個對象,還可僅可以作為指令操作的一個對象,還可 以用來存放指令操作的結(jié)果以用來存放指令操作的結(jié)果 n分號后的內(nèi)容是對指令的解釋分號后的內(nèi)容是對指令的解釋 第 3 章 傳送指令MOV的格式 MOV MOV destdest, ,srcsrc ;destsrc destsrc nMOVMOV指令的功能是將源操作數(shù)指令的功能是將源操作數(shù)srcsrc傳送至目的操作數(shù)傳送至目的操作數(shù) destdest,例如:,例如: MOV AL,05H;A

33、L05H MOV BX,AX;BXAX MOV AX,SI;AXDS:SI MOV AX,BP+06H;AXSS:BP+06H MOV AX,BX+SI;AXDS:BX+SI 第 3 章 3.2.2 立即數(shù)尋址方式 n指令中的操作數(shù)直接存放在機器代碼指令中的操作數(shù)直接存放在機器代碼 中,緊跟在操作碼之后(操作數(shù)作為中,緊跟在操作碼之后(操作數(shù)作為 指令的一部分存放在操作碼之后的主指令的一部分存放在操作碼之后的主 存單元中)存單元中) n這種操作數(shù)被稱為立即數(shù)這種操作數(shù)被稱為立即數(shù)imm n它可以是8位數(shù)值i8(00HFFH) n也可以是16位數(shù)值i16(0000HFFFFH) n立即數(shù)尋址方式

34、常用來給寄存器賦值立即數(shù)尋址方式常用來給寄存器賦值 第 3 章 立即數(shù)尋址指令 MOV AL,05H ;AL05H MOV AX,0102H;AX0102H 第 3 章 3.2.3 寄存器尋址方式 n操作數(shù)存放在操作數(shù)存放在CPU的內(nèi)部寄存器的內(nèi)部寄存器reg中,可以中,可以 是:是: n8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL n16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP n4個段寄存器seg: CS、DS、SS、ES 第 3 章 寄存器尋址指令 MOV AX,1234H;AX1234H MOV BX,AX;BXAX 第 3 章 3.2.4

35、存儲器尋址方式 n指令中給出操作數(shù)的主存地址信息(偏移地址,指令中給出操作數(shù)的主存地址信息(偏移地址, 稱之為有效地址稱之為有效地址EA),而段地址在默認的或),而段地址在默認的或 用段超越前綴指定的段寄存器中用段超越前綴指定的段寄存器中 n8086設(shè)計了多種存儲器尋址方式設(shè)計了多種存儲器尋址方式 1、直接尋址方式 2、寄存器間接尋址方式 3、寄存器相對尋址方式 4、基址變址尋址方式 5、相對基址變址尋址方式 第 3 章 1. 直接尋址方式 n有效地址在指令中直接給出有效地址在指令中直接給出 n默認的段地址在默認的段地址在DS段寄存器,可使段寄存器,可使 用段超越前綴改變用段超越前綴改變 MO

36、V AX,2000H ;AXDS:2000H ;指令代碼:A10020 MOV AX,ES:2000H ;AXES:2000H ;指令代碼:26A10020 第 3 章 2. 寄存器間接尋址方式 n有效地址存放在基址寄存器有效地址存放在基址寄存器BX、BP或變或變 址寄存器址寄存器SI、DI中。中。 nBX、SI和和DI默認的段地址在默認的段地址在SS段寄存器,段寄存器, BP默認的段地址在默認的段地址在DS段寄存器,可使用段寄存器,可使用 段超越前綴改變。段超越前綴改變。 MOV AX,SI;AXDS:SI 第 3 章 3. 寄存器相對尋址方式 n有效地址是寄存器內(nèi)容與有符號有效地址是寄存器

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

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

39、:位移量之和: 有效地址BX/BPSI/DI8/16位位移量 n段地址對應段地址對應BX基址寄存器默認是基址寄存器默認是DS,對,對 應應BP基址寄存器默認是基址寄存器默認是SS;可用段超越;可用段超越 前綴改變前綴改變 第 3 章 相對基址變址尋址指令 MOV AX,BX+SI+06H ;AXDS:BX+SI+06H 位移量可用符號表示位移量可用符號表示 同一尋址方式有多種表達形式同一尋址方式有多種表達形式 第 3 章 3.2.5 匯編語言指令格式 n由由4 4部分組成:部分組成: 標號標號: :指令助記符指令助記符 目的操作數(shù)目的操作數(shù), ,源操作數(shù)源操作數(shù) ;注釋;注釋 標號標號表示該指

40、令在主存中的邏輯地址表示該指令在主存中的邏輯地址 每個每個指令助記符指令助記符就代表一種指令就代表一種指令 目的和源操作數(shù)目的和源操作數(shù)表示參與操作的對象表示參與操作的對象 注釋注釋是對該指令或程序段功能的說明是對該指令或程序段功能的說明 第 3 章 指令操作數(shù)的表達(1) nr8任意一個任意一個8位通用寄存器位通用寄存器 AH AL BH BL CH CL DH DL nr16任意一個任意一個16位通用寄存器位通用寄存器 AX BX CX DX SI DI BP SP nreg代表代表r8或或r16 nseg段寄存器段寄存器 CS/DS/ES/SS 第 3 章 指令操作數(shù)的表達(2) nm8

41、一個一個8位存儲器操作數(shù)單元(所位存儲器操作數(shù)單元(所 有主存尋址方式)有主存尋址方式) nm16一個一個16位存儲器操作數(shù)單元位存儲器操作數(shù)單元 (所有主存尋址方式)(所有主存尋址方式) nmem代表代表m8或或m16 第 3 章 指令操作數(shù)的表達(3) ni8一個一個8位立即數(shù)位立即數(shù) ni16一個一個16位立即數(shù)位立即數(shù) nimm代表代表i8或或i16 ndest目的操作數(shù)目的操作數(shù) nsrc源操作數(shù)源操作數(shù) 第 3 章 8086指令系統(tǒng)概述 nIntel 8086Intel 8086指令系統(tǒng)共有指令系統(tǒng)共有117117條基本條基本 指令,可分成指令,可分成6 6個功能組個功能組 數(shù)據(jù)傳

42、送類指令 算術(shù)運算類指令 位操作類指令 串操作類指令 控制轉(zhuǎn)移類指令 處理機控制類指令 第 3 章 學習指令的注意事項 n指令的指令的功能功能該指令能夠?qū)崿F(xiàn)何種操作。通常指令該指令能夠?qū)崿F(xiàn)何種操作。通常指令 助記符就是指令功能的英文單詞或其縮寫形式助記符就是指令功能的英文單詞或其縮寫形式 n指令指令支持的尋址方式支持的尋址方式該指令中的操作數(shù)可以采用該指令中的操作數(shù)可以采用 何種尋址方式何種尋址方式 n指令指令對標志的影響對標志的影響該指令執(zhí)行后是否對各個標志該指令執(zhí)行后是否對各個標志 位有影響,以及如何影響位有影響,以及如何影響 n其他方面其他方面該指令其他需要特別注意的地方,如指該指令其他

43、需要特別注意的地方,如指 令執(zhí)行時的令執(zhí)行時的約定設(shè)置、必須預置的參數(shù)、隱含使用的約定設(shè)置、必須預置的參數(shù)、隱含使用的 寄存器寄存器等等 第 3 章 第3講(1) 教學要求 掌握掌握8086的寄存器組和存儲器組織的寄存器組和存儲器組織 掌握掌握8086的尋址方式的尋址方式 掌握掌握DEBUG調(diào)試程序的使用及調(diào)試指令調(diào)試程序的使用及調(diào)試指令 和程序段的方法和程序段的方法 習題習題3 (p93) 1, 3, +(P40)2, 7 邏輯段分配邏輯段分配 立即數(shù)尋址的功能立即數(shù)尋址的功能 立即數(shù)尋址的執(zhí)行立即數(shù)尋址的執(zhí)行 寄存器尋址的功能寄存器尋址的功能 寄存器尋址的執(zhí)行寄存器尋址的執(zhí)行 直接尋址的功

44、能直接尋址的功能 直接尋址的執(zhí)行直接尋址的執(zhí)行 寄存器間接尋址的功能寄存器間接尋址的功能 寄存器間接尋址的執(zhí)行寄存器間接尋址的執(zhí)行 寄存器相對尋址的功能寄存器相對尋址的功能 寄存器相對尋址的執(zhí)行寄存器相對尋址的執(zhí)行 基址變址尋址的功能基址變址尋址的功能 基址變址尋址的執(zhí)行基址變址尋址的執(zhí)行 相對基址變址尋址的功能相對基址變址尋址的功能 相對基址變址尋址的執(zhí)行相對基址變址尋址的執(zhí)行 8086內(nèi)部結(jié)構(gòu) 內(nèi)部暫存器內(nèi)部暫存器 IP ES SS DS CS 輸入輸入/輸出輸出 控制電路控制電路 外部總線外部總線 執(zhí)行部分執(zhí)行部分 控制電路控制電路 1 2 3 4 5 6 ALU 標志寄存器標志寄存器

45、AH AL BH BL CH CL DH DL SP BP SI DI 通用寄存器通用寄存器 地址加法器地址加法器 指令隊列緩沖器指令隊列緩沖器 執(zhí)行部件執(zhí)行部件 (EU) 總線接口部件總線接口部件 (BIU) 16位位 20位位 16位位 8位位 第 3 章 什么是溢出 n處理器內(nèi)部以補碼表示有符號數(shù)處理器內(nèi)部以補碼表示有符號數(shù) n8位表達的整數(shù)范圍是:位表達的整數(shù)范圍是:127128 n16位表達的范圍是:位表達的范圍是:3276732768 n如果運算結(jié)果超出這個范圍,就產(chǎn)生了溢出如果運算結(jié)果超出這個范圍,就產(chǎn)生了溢出 n有溢出,說明有符號數(shù)的運算結(jié)果不正確有溢出,說明有符號數(shù)的運算結(jié)果

46、不正確 3AH7CHB6H,就是,就是58124182, 已經(jīng)超出已經(jīng)超出128127范圍,產(chǎn)生溢出,故范圍,產(chǎn)生溢出,故OF1; 另一方面,補碼另一方面,補碼B6H表達真值是表達真值是-74, 顯然運算結(jié)果也不正確顯然運算結(jié)果也不正確 第 3 章 溢出和進位 n溢出標志溢出標志OF和進位標志和進位標志CF是兩個意義不同的是兩個意義不同的 標志標志 n進位標志表示無符號數(shù)運算結(jié)果是否超出范圍,進位標志表示無符號數(shù)運算結(jié)果是否超出范圍, 運算結(jié)果仍然正確;運算結(jié)果仍然正確; n溢出標志表示有符號數(shù)運算結(jié)果是否超出范圍,溢出標志表示有符號數(shù)運算結(jié)果是否超出范圍, 運算結(jié)果已經(jīng)不正確。運算結(jié)果已經(jīng)不

47、正確。 第 3 章 溢出和進位的對比 例例1:3AH + 7CHB6H 無符號數(shù)運算:無符號數(shù)運算: 58124182 范圍內(nèi),無進位范圍內(nèi),無進位 有符號數(shù)運算:有符號數(shù)運算: 58124182 范圍外,有溢出范圍外,有溢出 例例2:AAH + 7CH(1)26H 無符號數(shù)運算:無符號數(shù)運算: 170124294 范圍外,有進位范圍外,有進位 有符號數(shù)運算:有符號數(shù)運算: 8612428 范圍內(nèi),無溢出范圍內(nèi),無溢出 第 3 章 如何運用溢出和進位 n處理器對兩個操作數(shù)進行運算時,按照處理器對兩個操作數(shù)進行運算時,按照 無符號數(shù)求得結(jié)果,并相應設(shè)置進位標無符號數(shù)求得結(jié)果,并相應設(shè)置進位標 志

48、志CF;同時,根據(jù)是否超出有符號數(shù)的;同時,根據(jù)是否超出有符號數(shù)的 范圍設(shè)置溢出標志范圍設(shè)置溢出標志OF。 n應該利用哪個標志,則由程序員來決定。應該利用哪個標志,則由程序員來決定。 也就是說,如果將參加運算的操作數(shù)認也就是說,如果將參加運算的操作數(shù)認 為是無符號數(shù),就應該關(guān)心進位;認為為是無符號數(shù),就應該關(guān)心進位;認為 是有符號數(shù),則要注意是否溢出。是有符號數(shù),則要注意是否溢出。 第 3 章 溢出的判斷 n判斷運算結(jié)果是否溢出有一個簡單的規(guī)判斷運算結(jié)果是否溢出有一個簡單的規(guī) 則:則: n只有當兩個相同符號數(shù)相加(包括不同只有當兩個相同符號數(shù)相加(包括不同 符號數(shù)相減),而運算結(jié)果的符號與原符號數(shù)相減),而運算結(jié)果的符號與原 數(shù)據(jù)符號相反時,產(chǎn)生溢出;因為,此數(shù)據(jù)符號相反時,產(chǎn)生溢出;因為,此 時的運算結(jié)果顯然不正確時的運算結(jié)果顯然不正確 n其他情況下,則不會產(chǎn)生溢出其他情況下,則不會產(chǎn)生溢出 第 3 章 標志的分類 n狀態(tài)標志用來記錄程序運行結(jié)果的狀態(tài)標志用來記錄程序運行結(jié)果的 狀態(tài)信息,許多指令的執(zhí)行都將相應地狀態(tài)信息,許多指令的執(zhí)行都將相應地 設(shè)置它設(shè)置它 CF ZF SF PF OF AF n控制標志可由程序根據(jù)需要用指令控制標志

溫馨提示

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

評論

0/150

提交評論