




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 指令的根本概念w指令和指令系統wCISC和RISCw指令的構造和分類w指令中的數據類型w指令的尋址方式w指令中操作數的尋址方式 指令的根本概念w可以在計算機硬件平臺上運轉的程序是由一系列的機器指令組成的,機器指令通常簡稱指令。軟件的功能借助指令的集合來實現,而指令可以直接由硬件執行w在IA-32系列的CPU中,包含了由大量的具有各種各樣作用的指令構成的指令系統。w在IA-32CPU中,在實地址方式下,采用16位指令方式16位存放器和16位偏移量;采用32位指令方式32位存放器和32位偏移量 一臺計算機中一切機器指令的集合,稱為這臺計算機的指令系一臺計算機中一切機器指令的集合,稱為這臺計算機的
2、指令系統。統。 7070年代末期,計算機硬件構造隨著年代末期,計算機硬件構造隨著VLSIVLSI技術的飛速開展而越來技術的飛速開展而越來越復雜化,大多數計算機的指令系統多達幾百條。我們稱這些計算越復雜化,大多數計算機的指令系統多達幾百條。我們稱這些計算機為復雜指令系統計算機,簡稱機為復雜指令系統計算機,簡稱CISCCISC。如此龐大的指令系統不但使計算機的研制周期變長,難以保證正確如此龐大的指令系統不但使計算機的研制周期變長,難以保證正確性,不易調試維護,而且由于采用了大量運用頻率很低的復雜指令性,不易調試維護,而且由于采用了大量運用頻率很低的復雜指令而呵斥硬件資源浪費。所以在而呵斥硬件資源浪
3、費。所以在19891989年隨著年隨著80486 DX CPU80486 DX CPU計算機的誕計算機的誕生,人們又提出了便于生,人們又提出了便于VLSIVLSI技術實現的精簡指令系統計算機,簡稱技術實現的精簡指令系統計算機,簡稱RISCRISC,有效地減少了指令的執行周期。而且它以,有效地減少了指令的執行周期。而且它以RISCRISC技術為根底,技術為根底,經過幾條經過幾條RISCRISC指令和并行流水線方式來支持經典的指令和并行流水線方式來支持經典的CISCCISC型指令。同型指令。同時由于組成指令周期的機器周期變得很規整,所以可以用組合邏輯時由于組成指令周期的機器周期變得很規整,所以可以
4、用組合邏輯控制器替代微程序控制器來提高控制器替代微程序控制器來提高CPUCPU處置速度。處置速度。0B0E:0100 20740A AND SI+0A,DH0B0E:0103 803C3F CMP BYTE PTR SI,3F0B0E:0106 7514 JNZ 011C0B0E:0108 83F901 CMP CX,+010B0E:010B 760F JBE 011C0B0E:010D 8A07 MOV AL,BX0B0E:010F AA STOSB0B0E:0110 43 INC BX0B0E:0111 46 INC SI0B0E:0112 49 DEC CX0B0E:0113 FEC4
5、INC AH0B0E:0115 8A07 MOV AL,BX0B0E:0117 3C20 CMP AL,200B0E:0119 7401 JZ 011C0B0E:011B AA STOSB0B0E:011C 3400 XOR AL,000B0E:011E FD STD0B0E:011F 0AF6 OR DH,DH CS : IP指令字指令字 指令的注釋符指令的注釋符 一個較完善的指令系統,該當包括數據傳送類指令、算術運算一個較完善的指令系統,該當包括數據傳送類指令、算術運算類指令、邏輯運算類指令、程序控制類指令、輸入輸出指令、字類指令、邏輯運算類指令、程序控制類指令、輸入輸出指令、字符串類指令
6、、系統控制類指令。符串類指令、系統控制類指令。 1、數據傳送指令:數據傳送指令主要包括取數指令、存數指令、數據傳送指令:數據傳送指令主要包括取數指令、存數指令、傳送指令、成組傳送指令、字節交換指令、清累加器指令、堆棧傳送指令、成組傳送指令、字節交換指令、清累加器指令、堆棧操作指令等等,這類指令主要用來實現主存和存放器之間,或存操作指令等等,這類指令主要用來實現主存和存放器之間,或存放器和存放器之間的數據傳送。放器和存放器之間的數據傳送。2、算術運算指令:這類指令包括二進制定點加、減、乘、除指令,、算術運算指令:這類指令包括二進制定點加、減、乘、除指令,浮點加、減、乘、除指令,求反、求補指令,算
7、術移位指令,算浮點加、減、乘、除指令,求反、求補指令,算術移位指令,算術比較指令,十進制加、減運算指令等。這類指令主要用于定點術比較指令,十進制加、減運算指令等。這類指令主要用于定點浮點的算術運算,大型機中有向量運算指令,直接對整個向量或浮點的算術運算,大型機中有向量運算指令,直接對整個向量或矩陣進展求和、求積運算。矩陣進展求和、求積運算。3、邏輯運算指令:這類指令包括邏輯加、邏輯乘、按位加、邏輯、邏輯運算指令:這類指令包括邏輯加、邏輯乘、按位加、邏輯移位等指令,主要用于無符號數的位操作、代碼的轉換、判別及移位等指令,主要用于無符號數的位操作、代碼的轉換、判別及運算。運算。典型指令典型指令4、
8、程序控制指令:程序控制指令也稱轉移指令。計算機在執行程、程序控制指令:程序控制指令也稱轉移指令。計算機在執行程序時,通常情況下按指令計數器的現行地址順序取指令。但有時會序時,通常情況下按指令計數器的現行地址順序取指令。但有時會遇到特殊情況:機器執行到某條指令時,出現了幾種不同結果,這遇到特殊情況:機器執行到某條指令時,出現了幾種不同結果,這時機器必需執行一條轉移指令,根據不同結果進展轉移,從而改動時機器必需執行一條轉移指令,根據不同結果進展轉移,從而改動程序原來執行的順序。這種轉移指令稱為條件轉移指令。轉移條件程序原來執行的順序。這種轉移指令稱為條件轉移指令。轉移條件來自于程序形狀字標志存放器
9、來自于程序形狀字標志存放器PSW如下特征位:進位標志如下特征位:進位標志C、結果為零標志、結果為零標志Z、結果為負標志、結果為負標志S、結果溢出標志、結果溢出標志V等。等。5、輸入輸出指令:主要用來啟動外圍設備,檢查測試外圍設備的、輸入輸出指令:主要用來啟動外圍設備,檢查測試外圍設備的任務形狀,并實現外部設備和任務形狀,并實現外部設備和CPU之間,或外圍設備與外圍設備之之間,或外圍設備與外圍設備之間的信息傳送。間的信息傳送。(單獨編址和一致編址單獨編址和一致編址)6、字符串處置指令:是一種非數值處置指令,普通包括字符串傳、字符串處置指令:是一種非數值處置指令,普通包括字符串傳送、字符串轉換把一
10、種編碼的字符串轉換成另一種編碼的字符送、字符串轉換把一種編碼的字符串轉換成另一種編碼的字符串、字符串比較、字符串查找查找字符串中某一子串、字符串、字符串比較、字符串查找查找字符串中某一子串、字符串抽取提取某一子串、字符串交換把某一字符串用另一字符串抽取提取某一子串、字符串交換把某一字符串用另一字符串交換等。這類指令在文字編輯中對大量字符串進展處置。串交換等。這類指令在文字編輯中對大量字符串進展處置。7、特權指令:是指具有特殊權限的指令。由于指令的權限量大,、特權指令:是指具有特殊權限的指令。由于指令的權限量大,假設運用不當,會破壞系統和其他用戶信息。因此這類指令只用于假設運用不當,會破壞系統和
11、其他用戶信息。因此這類指令只用于操作系統或其他系統軟件,普通不直接提供應用戶運用。操作系統或其他系統軟件,普通不直接提供應用戶運用。 在多用戶、多義務的計算機系統中特權指令必不可少。它主要在多用戶、多義務的計算機系統中特權指令必不可少。它主要用于系統資源的分配和管理,包括改動系統任務方式,檢測用戶的用于系統資源的分配和管理,包括改動系統任務方式,檢測用戶的訪問權限,修正虛擬存儲器管理的段表、頁表,完成義務的創建和訪問權限,修正虛擬存儲器管理的段表、頁表,完成義務的創建和切換等。切換等。8、其他指令:除以上各類指令外,還有形狀存放器置位、復位指、其他指令:除以上各類指令外,還有形狀存放器置位、復
12、位指令、測試指令、暫停指令、空操作指令,以及其他一些系統控制用令、測試指令、暫停指令、空操作指令,以及其他一些系統控制用的特殊指令。的特殊指令。42 指令格式指令格式 表示一條指令的機器字,就稱為指令字,通常簡稱指令。表示一條指令的機器字,就稱為指令字,通常簡稱指令。一條指令字的二進制位數稱為指令字長一條指令字的二進制位數稱為指令字長,普通采用可變普通采用可變的指令字長的指令字長指令格式,那么是指令字用二進制代碼表示的構造方式。指令格式,那么是指令字用二進制代碼表示的構造方式。一條指令的構造可用如下方式來表示:操作碼和地址碼一條指令的構造可用如下方式來表示:操作碼和地址碼兩部分組成。兩部分組成
13、。 421 操作碼操作碼 (固定長度的操作碼、可變長度的操作固定長度的操作碼、可變長度的操作碼碼指令的操作碼表示該指令應進展什么性質的操作,如進指令的操作碼表示該指令應進展什么性質的操作,如進展加法、減法、乘法、除法、取數、存數等等。組成操展加法、減法、乘法、除法、取數、存數等等。組成操作碼字段的位數普通取決于計算機指令系統的規模。作碼字段的位數普通取決于計算機指令系統的規模。 操作碼字段操作碼字段地址碼字段地址碼字段指令稱號符號指令機器指令用十六進制表示指令助記符符號地址條件轉移JZNEXT7409H增量INCCX41H減量DECCX49H入棧PUSHAX50H出棧POPAX58H比較CMP
14、STRINGBX,0DH80BF04000DH加法ADDSI,283C602H傳送MOVINDEX,BL881E0A00H轉子程序CALLDISPLAYE82A00H表4.2 典型的符號指令與其相對應的機器指令的構造方式 指令稱號指令助記符二進制操作碼用十六進制表示條件轉移JZ74H增量INC41H減量DEC49H入棧PUSH50H出棧POP58H比較CMP80H加法ADD83H傳送MOV88H轉子程序CALLE8H表4.3 部分典型指令的助記符與其相對應的二進制操作碼 4 42 22 2 地址碼地址碼 根據一條指令中有幾個操作數地址,可將該指令稱為幾根據一條指令中有幾個操作數地址,可將該指令
15、稱為幾操作數指令或幾地址指令。目前二地址和一地址指令格操作數指令或幾地址指令。目前二地址和一地址指令格式用的最多。式用的最多。 l l 零地址指令零地址指令( (無操作數無操作數) )的指令字中只需操作的指令字中只需操作碼,而沒有地址碼。碼,而沒有地址碼。 a. a.無操作數的控制操作無操作數的控制操作 如空操作指令、停機指如空操作指令、停機指令等。令等。 b. b.隱含操作數的操作隱含操作數的操作 例如,在例如,在8086/80888086/8088指令指令系統中,字節轉換字指令系統中,字節轉換字指令CBWCBW,其源操作數隱含為,其源操作數隱含為ALAL的的內容;字轉換雙字指令內容;字轉換
16、雙字指令CWDCWD,其源操作數隱含為,其源操作數隱含為AXAX的內的內容,又比如容,又比如IBMPCIBMPC的指令系統中下面的幾條操作標志存的指令系統中下面的幾條操作標志存放器有關的指令:放器有關的指令:LAHFLAHF、SAHFSAHF、PUSHFPUSHF、POPFPOPFl l 單地址指令常稱為單操作數指令。單地址指令常稱為單操作數指令。a.a.比如壓棧和彈出棧有關的兩條指令比如壓棧和彈出棧有關的兩條指令 PUSH ax PUSH ax POP ax POP ax b. b. 地址碼所指定的操作數為源操作數地址碼所指定的操作數為源操作數 在這種情況下,在這種情況下,累加器累加器AXA
17、X的內容為目的操作數,其操作如下的內容為目的操作數,其操作如下 8 8位和位和1616位微型機的操作數單地址指令都采用這種操作方式。位微型機的操作數單地址指令都采用這種操作方式。Mul div Mul div 等指令等指令w 二地址指令常稱雙操作數指令,它有兩個地址二地址指令常稱雙操作數指令,它有兩個地址碼字段碼字段A1和和A2,分別指明參與操作的兩個數在內,分別指明參與操作的兩個數在內存中或運算器通用存放器的地址,因此包括在存存中或運算器通用存放器的地址,因此包括在存放器放器存放器型,存放器存放器型,存放器存儲器型和存儲器存儲器型和存儲器存儲器型三類指令。這些指令的特點是:執行速存儲器型三類
18、指令。這些指令的特點是:執行速度越來越慢,但是數據處置才干越來越強。其中度越來越慢,但是數據處置才干越來越強。其中地址地址A1兼做存放操作結果的地址。大多數指令兼做存放操作結果的地址。大多數指令都是二地址指令都是二地址指令 w (A1) OP (A2) A1 w比如比如: MOV AX, 054CH wl 三地址指令字中有三個順序的操作數地址三地址指令字中有三個順序的操作數地址A1,A2和和A3。比較少,往往可以實現復雜的。比較少,往往可以實現復雜的功能功能)w (A1) OP (A2) A3 w比如在比如在80C51單片機的指令系統中比較轉移類指單片機的指令系統中比較轉移類指令令CJNE A
19、,DIRECT,REL指令中的數據類型w字節類型:有符號整數用補碼表示,在MASM匯編言語中運用DB、BYTE偽指令定義字節數據。w如:data1 db 254w字類型:在IA-32計算機中,一個字由二個字節組成,其低位字節放在低地址單元,高位字節放在高地址單元。稱為小尾方式。w如:data1 dw 2544w雙字類型:在IA-32計算機中,一個字由四個字節組成,其低位字節放在低地址單元,高位字節放在高地址單元。例如乘法后的乘積或除法前的被除數都是以雙字出現的。w如 :data1 dd 254400內存訪問的實方式w:即實地址訪問方式它是:即實地址訪問方式它是Intel公司公司80286及以后
20、的及以后的x86(80386,80486和和80586等等)兼容處置器兼容處置器CPU的操作方的操作方式之一。實方式被特殊定義為在式之一。實方式被特殊定義為在32位地址中運用位地址中運用20位地址位地址的內存可訪問空間,這就意味著它可訪問的最大內存空間為的內存可訪問空間,這就意味著它可訪問的最大內存空間為1MB物理內存和物理內存和BIOS-ROM,軟件可經過這些地址直,軟件可經過這些地址直接訪問接訪問BIOS程序和外圍硬件。實方式下處置器多道義務的程序和外圍硬件。實方式下處置器多道義務的任務方式。但是為了向下兼容,所以任務方式。但是為了向下兼容,所以80286及以后的及以后的x86系系列兼容處
21、置器依然是開機啟動時任務在實方式下。列兼容處置器依然是開機啟動時任務在實方式下。80186和和早期的處置器僅有一種操作方式,就是后來我們所定義的實早期的處置器僅有一種操作方式,就是后來我們所定義的實方式。實方式雖然能訪問到方式。實方式雖然能訪問到1M的地址空間,但是由于的地址空間,但是由于BIOS的映射作用即的映射作用即BIOS占用了部分空間地址資源,所以真占用了部分空間地址資源,所以真正能運用的物理內存空間內存條,也就是在正能運用的物理內存空間內存條,也就是在640k到到924k之間。之間。1M地址空間組成是由地址空間組成是由16位的段地址和位的段地址和16位的段位的段內偏移地址組成的。用公
22、式表示為:物理地址內偏移地址組成的。用公式表示為:物理地址=左移左移4位的段位的段地址地址+偏移地址。偏移地址。內存訪問的維護方式w維護方式:經常縮寫為維護方式:經常縮寫為p-mode,在在Intel iAPX 286程序員參考手冊中程序員參考手冊中iAPX286是是Intel 80286的另一的另一種叫法它又被稱作為虛擬地址維護方式。雖然在種叫法它又被稱作為虛擬地址維護方式。雖然在Intel 80286手冊中曾經提出了虛地址維護方式,但手冊中曾經提出了虛地址維護方式,但實踐上它只是一個指引,真正的實踐上它只是一個指引,真正的32位地址出如今位地址出如今Intel 80386上。維護方式本身是
23、上。維護方式本身是80286及以后兼容及以后兼容處置器序列之后產成的一種操作方式,它具有許多處置器序列之后產成的一種操作方式,它具有許多特性設計為提高系統的多道義務和系統的穩定性。特性設計為提高系統的多道義務和系統的穩定性。例如內存的維護限長存放器,分頁機制頁表例如內存的維護限長存放器,分頁機制頁表存放器存放器)和硬件虛擬存儲和硬件虛擬存儲MMU)的支持。現代多數的支持。現代多數的的x86處置器操作系統都運轉在維護方式下。處置器操作系統都運轉在維護方式下。 內存的組織構造 以奔騰CPU芯片為例w在16位方式下的系統中,CPU的存放器和數據總線的位數都是16位長,但是地址總線卻為20根,因此對內
24、存的尋址可以到達1MB。w在16位方式的系統中,如何把20位地址集合影射到16位的地址集合上面呢?方法就是把內存分段:把延續的20位的地址空間按照低四位為0000B的原那么分割成段,因此最多可以被分割成216個段,由此“段的尋址就可以經過16位存放器實現了,而16位方式下的內存段最大空間也不超越216 B,由此段內的尋址也可以經過16位存放器實現了。w在16位方式的系統中,一方面為了規范管理內存的運用,一個程序最多由四段組成,分別是代碼段、數據段、堆棧段和附加段。每個段的起始地址低四位為0,所以分別把它們的高16位存儲在CS、DS、SS、ES ,叫做段基址存放器。而每個段內的地址只能保管在非段
25、基址存放器中。 內存的組織構造 以奔騰CPU芯片為例w1、邏輯地址:在程序設計中通常運用邏輯地址,邏輯地址包含段基址和段內偏移量,它們都是無符號的16位二進制數據。其中段基址由CS、DS、SS、ES分別提供,而偏移量由IP或者EU按照不同的尋址方式根據指令中給出有效地址計算得到的提供。w2、物理地址:把段基址的值左移4位變成20位后,加上EU有效地址得到。w3、尋址方式:指令中有效地址的提供方式。數據的存儲構造決議著數據的尋址方式,數據的尋址方式依賴著CPU中相應的存放器基址、變址等存放器 431 指令的尋址方式指令的尋址方式: 順序尋址方式、騰躍尋址方式順序尋址方式、騰躍尋址方式 順序尋址方
26、式順序尋址方式: 由于指令地址在內存中按順序安排,當執行一由于指令地址在內存中按順序安排,當執行一段程序時,通常是一條指令接一條指令的順序進展,這種程序段程序時,通常是一條指令接一條指令的順序進展,這種程序順序執行的過程,我們稱為指令的順序尋址方式。順序執行的過程,我們稱為指令的順序尋址方式。 騰躍尋址方式:當程序改動執行的順序時,指令的尋址就采取騰騰躍尋址方式:當程序改動執行的順序時,指令的尋址就采取騰躍尋址方式。所謂騰躍,是指下條指令的地址碼不是由程序計數器躍尋址方式。所謂騰躍,是指下條指令的地址碼不是由程序計數器給出,而是由本條指令給出。教材給出,而是由本條指令給出。教材69頁的相對尋址
27、頁的相對尋址(1) 立刻尋址方式立刻尋址方式* 操作數在指令中給出操作數在指令中給出 MOV AL, 5 MOV AX, 3064H MOV AL, A* 只能用于只能用于 SRC 字段字段* SRC 和和 DST 的字長一致的字長一致 MOV AH, 3064H 匯匯 編編 語語 句句操作數操作數長度長度操操 作作MOV BLMOV BL,44448位把十進制數442CH傳送到BL中MOV AXMOV AX,44H44H16位把十六進制數44H傳送到AX中MOV ALMOV AL,A A8位把A 的ASCII碼41H傳送到AL中MOV EBXMOV EBX,12340000H12340000
28、H32位把十六進制數12340000H傳送到EBX中MOV ESIMOV ESI,121232位把十進制數120CH傳送到ESI中表4.4 運用立刻數尋址的MOV指令例子w在運用上,通常利用立刻尋址方式給存放在運用上,通常利用立刻尋址方式給存放器或內存單元賦初值;器或內存單元賦初值;ww留意:立刻數只能作為源操作數,不能作留意:立刻數只能作為源操作數,不能作為目的操作數,并且只能是常數值。為目的操作數,并且只能是常數值。4.4.2 存放器尋址方式w此尋址方式下,操作數存放在此尋址方式下,操作數存放在CPUCPU的某個通用的某個通用存放器中,而指令中指出了該存放器。存放器中,而指令中指出了該存放
29、器。w注:存放器尋址方式可以援用注:存放器尋址方式可以援用8 8個個8 8位的通用存位的通用存放器放器ALAL、AHAH、BLBL、BHBH、CLCL、CHCH、DLDL、DHDH,也可以,也可以援用援用8 8個個1616位的通用存放器位的通用存放器AXAX、BXBX、CXCX、DXDX、BPBP、SPSP、SISI、DIDI,還可以援用,還可以援用8 8個個3232位的通用存放器位的通用存放器EAXEAX、EBXEBX、ECXECX、EDXEDX、EBPEBP、ESPESP、ESIESI、EDIEDI。 (2) 存放器尋址方式存放器尋址方式* 操作數在指定的存放器中操作數在指定的存放器中 M
30、OV AX, BX MOV AL, BH MOV AX, 3064H* 字節存放器只需字節存放器只需 AH AL BH BL CH CL DH DL* SRC 和和 DST 的字長一致的字長一致 MOV AH, BX * CS 不能用不能用 MOV 指令改動指令改動 MOV CS, AX (3) 直接尋址方式直接尋址方式* 有效地址有效地址EA由指令直接給出由指令直接給出 例:例:MOV AX, 2000H EA=2000H, 假設假設(DS)=3000H, 那么那么PA=32000H* 隱含的段為數據段隱含的段為數據段 DS* 可運用段跨越前綴可運用段跨越前綴 MOV AX, ES: 200
31、0H* 操作數地址可由變量符號地址表示操作數地址可由變量符號地址表示VALUE DB 10MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE 5030 32000AH AL3050(AX) = 3050H匯 編 語 句操作數長度操 作MOV DH,1000H8位把DS段中偏移地址1000H單元的內容裝入DH中 MOV CX,DATA116位把DS段中偏移地址為DATA1和DATA1+1的兩單元的內容裝入CX MOV ES,DATA216位把DS段中偏移地址為DATA2和DATA2+1的兩單元內容裝入ES MOV VALUE,EAX32位EAX內
32、容傳到DS段中偏移地址為VALUE至VALUE+3 的4個單元 MOV EDI,SUM132位把DS段中偏移地址為SUM1至SUM1+3的4個單元內容裝入EDI表表4.6 4.6 運用直接尋址的運用直接尋址的MOVMOV指令例子指令例子 (4) 存放器間接尋址存放器間接尋址* EA 在基址存放器在基址存放器(BX/BP) 或或 變址存放器變址存放器(SI/DI) 中中 MOV AX, BX PA = 16d (DS) + (BX) MOV AX, ES:BX PA = 16d (ES) + (BX) MOV AX, BP PA = 16d (SS) + (BP) * 不允許運用不允許運用AX、
33、CX、DX 存放存放 EA MOV AX, CX * SRC 和和 DST 的字長一致的字長一致 MOV DL, BX ; BX指示一個字節指示一個字節單元單元 MOV DX, BX ; BX指示一個字單指示一個字單元元 * 適于數組、字符串、表格的處置適于數組、字符串、表格的處置匯 編 語 句操作數長度操 作MOV BP,DL8位存放器DL的內容傳到SS段由BP尋址的存儲單元MOV DI,BH8位存放器BH的內容傳到DS段由DI尋址的存儲單元MOV AL,EDX8位DS段由EDX尋址的存儲單元的內容傳送到ALMOV CX,BX16位DS段中用BX尋址的存儲單元的字內容傳到CX中MOV ECX
34、,EBX32位DS段由EBX尋址的存儲單元的雙字傳送到ECX表表4.7 4.7 運用存放器間接尋址的運用存放器間接尋址的MOVMOV指令例子指令例子 有效地址 =(BX)(BP) 8位位(SI) 16位位(DI)+位移量位移量(5) 存放器相對尋址方式存放器相對尋址方式* 例:例: MOV AX, COUNTSI 或或 MOV AX, COUNT+SI 假設假設(DS)=3000H, (SI)=2000H, COUNT=3000H, 那么那么 PA = 35000H 假設假設(35000H)=1234H, 那么那么 (AX)=1234H* 適于數組、字符串、表格的處置適于數組、字符串、表格的處
35、置匯 編 語 句操 作 數 長度操 作MOV ARRAYSI,BL 8位BL的內容送入由ARRAY+SI尋址的DS段存儲單元MOV LISTSI+2,CL 8位CL的內容送入由LIST+SI+2之和尋址的DS段存儲單元MOV AX,DI+100H 16位由DI+100H尋址的DS段存儲單元的字裝入AXMOV DI,SET ITBX 16位由SET IT+BX尋址的DS段存儲單元的內容送入DIMOV DL,EAX+10H16位由EAX+10H尋址的DS段存儲單元的內容裝入DIMOV ARRAYEBX,EAX32位EAX內容送入由ARRAY+EBX尋址的DS段存儲單元中表4.8 運用存放器相對尋址
36、的MOV指令例子(6) 基址變址尋址方式基址變址尋址方式* MOV AX, BXDI 或或 MOV AX, BX+DI MOV AX, ES:BXSI* 適于數組、字符串、表格的處置適于數組、字符串、表格的處置* 必需是一個基址存放器和一個變址存放器的必需是一個基址存放器和一個變址存放器的組合組合 MOV AX, BXBP MOV AX, SIDI 有效地址有效地址 =(BX) (SI)(BP) (DI)+匯 編 語 句操 作 數 長度操 作MOV DH,BX+DI+20H8位由由BXBX、DIDI和和20H20H之和尋址的之和尋址的DSDS段段存儲單元的內容裝入存儲單元的內容裝入DHDHMO
37、V LISTBP+DI,CL8位CL送到由LIST、BP及DI之和尋址的SS段存儲單元中MOV LISTBP+SI+4MOV LISTBP+SI+4,DHDH8位DHDH送到由送到由LISTLIST、BPBP、SISI及及4 4之和之和尋址的尋址的SSSS段存儲單元中段存儲單元中MOV AX,FILEBX+DI16位由由FILEFILE、BXBX及及DIDI之和尋址的之和尋址的DSDS段存儲單元的內容送入段存儲單元的內容送入 AXAXMOV EAXMOV EAX,FILEEBX+ECX+2FILEEBX+ECX+232位由FILE、EBX、ECX及2之和尋址的DS段存儲單元的內容裝入 EAX表
38、表4.9 4.9 運用基址變址尋址的運用基址變址尋址的MOVMOV指令指令 (7) 相對基址變址尋址方式相對基址變址尋址方式 MOV AX, MASKBXSI 或或 MOV AX, MASKBX+SI 或或 MOV AX, MASK+BX+SI 有效地址 =(BX) (SI) 8位位(BP) (DI) 16位位+位移量位移量例:編寫一段顯示字符串例:編寫一段顯示字符串STRING的程序的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR!, 0DH , 0AH , $ COUNT DW 17 DATA ENDS (1) 直接尋址直接尋址 mov dl, strin
39、g mov ah, 2 int 21h ; 顯示字符顯示字符H mov dl, string+1 mov ah, 2 int 21h ; 顯示字符顯示字符A .(2) 存放器間接尋址存放器間接尋址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址的偏址 bxnext: mov dl, bx mov ah, 2 int 21h ; 顯示一個字符顯示一個字符 inc bx loop next ; 循環指令循環指令(3) 存放器相對尋址存放器相對尋址 mov cx, count ; mov cx, 17 mov si, 0 ne
40、xt: mov dl, stringsi ; mov dl, string+si mov ah, 2 int 21h ; 顯示一個字符顯示一個字符 inc si loop next ; 循環指令循環指令(4) 基址變址尋址基址變址尋址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址的偏址 bx mov si, 0next: mov dl, bxsi ; mov dl, bx+si mov ah, 2 int 21h ; 顯示一個字符顯示一個字符 inc si loop next ; 循環指令循環指令(5) DOS 顯示字
41、符串功能顯示字符串功能 mov dx, offset string ; string的偏址的偏址 dx ; lea dx, string mov ah, 9 int 21h ; 顯示一串字符顯示一串字符典型的尋址方式有:典型的尋址方式有: l l 立刻尋址:指令的地址字段指出的不是操作數的地址,立刻尋址:指令的地址字段指出的不是操作數的地址,而是操作數本身,這種尋址方式稱為立刻尋址。教材而是操作數本身,這種尋址方式稱為立刻尋址。教材101101頁圖頁圖4-6.4-6.這種尋址方式經常出如今雙地址指令中的源操作數的位置,用于這種尋址方式經常出如今雙地址指令中的源操作數的位置,用于給存放器賦值如在
42、以下指令中的給存放器賦值如在以下指令中的MOV ALMOV AL,25; MOV BX25; MOV BX,“ABAB;MOV DXMOV DX,5CH5CH源操作數的尋址方式源操作數的尋址方式 l l 直接尋址:在指令格式的地址字段中直接指出操作數直接尋址:在指令格式的地址字段中直接指出操作數在內存中的有效地址,即操作數地址在指令中:在內存中的有效地址,即操作數地址在指令中:EA=D EA=D 教材教材102102頁。頁。例如:例如:MOV BXMOV BX,DSDS:1000H1000H;MOV BXMOV BX,VAR VAR 符號地址隱含為符號地址隱含為DSDS,其它段必需明顯指出,其
43、它段必需明顯指出 見以下圖;見以下圖;l l存放器存放器( (直接直接) )尋址:操作數在指令中所給出的存放器中通用尋址:操作數在指令中所給出的存放器中通用存放器和段存放器的尋址方式,比如在以下程序段中存放器和段存放器的尋址方式,比如在以下程序段中 MOV AX MOV AX,23 MOV BX23 MOV BX,15 ADD AX15 ADD AX,BXBX的的ADDADD中的源操作數和目的操作數中的源操作數和目的操作數的尋址方式。的尋址方式。w 間接尋址:是相對于直接尋址而言的,在間接尋址間接尋址:是相對于直接尋址而言的,在間接尋址的情況下,指令地址字段中的方式地址的情況下,指令地址字段中
44、的方式地址D不是操作不是操作數的真正地址,而是操作數地址的指示器,或者說數的真正地址,而是操作數地址的指示器,或者說D單元的內容才是操作數的有效地址。即操作數地單元的內容才是操作數的有效地址。即操作數地址在內存中:址在內存中:EA=D,w 比如:比如:mov ax, 045ch w存放器間接尋址:操作數的有效地址存放器間接尋址:操作數的有效地址EA直接從基址直接從基址存放器存放器BP、BX或變址存放器或變址存放器SI、DI中獲中獲得,假設以得,假設以BX、SI、DI間接尋址時候,隱含的段存間接尋址時候,隱含的段存放器為放器為DS,假設以,假設以BP間接尋址,那么隱含運用的間接尋址,那么隱含運用
45、的段存放器為段存放器為SS。比如:。比如:MOV CH,SI 見以下圖見以下圖 l 存放器相對尋址變址相對尋址、基址相對尋址:把CPU中某個變址存放器SI、DI基址存放器:BX、BP存放器的內容與偏移量D相加來構成操作數的有效地址,即操作數地址為變址存放器的內容與偏移量D之和,即 EA=(R)變址+D假設以BX、SI、DI間接尋址時候,隱含的段存放器為DS,假設以BP間接尋址,那么隱含運用的段存放器為SS例如指令:見以下圖基址變址尋址方式:操作數的有效地址EA由基址存放器和變址存放器和位移量相加得到。假設以BX為基地址存放器,隱含的段存放器為DS,假設以BP為基地址存放器,那么隱含運用的段存放
46、器為SS例如:如:AX,200HBXSI復習題復習題(補充補充)w例例B:某微機的指令格式如下所示:某微機的指令格式如下所示:w 15 10 9 8 7 0wD:位移量:位移量wX:尋址特征位:尋址特征位w X=00:直接尋址;:直接尋址;w X=01:用變址存放器:用變址存放器X1進展變址;進展變址;w X=02:用變址存放器:用變址存放器X2進展變址;進展變址;w X=11:相對尋址:相對尋址w 設設PC=1234H,X1=0037H,X2=1122HH代表十六進制數,請確定以下指令的有效地址。代表十六進制數,請確定以下指令的有效地址。w 14420H 22244H 31322H w 43
47、521H 56723H操作碼XD解:解:1X=00,D=20H,有效地址,有效地址EA=20H; 2X=10,D=44H,有效地址,有效地址EA=1122H+44H=1166H; 3X=11,D=22H,有效地址,有效地址EA=1234H+22H=1256H; 4X=01,D=21H,有效地址,有效地址EA=0037H+21H=0058H; 5X=11,D=23H,有效地址,有效地址EA=1234H+23H=1257H;復習題復習題(補充補充)復習題復習題(補充補充)w10、分別指出以下各8086/8088指令中源操作數和目的操作數的尋址方式w1存放器直接尋址 立刻數尋址w2存放器直接尋址 直
48、接尋址w3存放器間接尋址 存放器直接尋址 w4存放器直接尋址 相對間接基址變址尋址w5存放器直接尋址 基址變址尋址w6存放器間接尋址 立刻數尋址w7存放器直接尋址 w8存放器直接尋址 相對基址尋址w9存放器直接尋址 存放器間接尋址 w10存放器直接尋址 存放器直接尋址 w12、判別對錯w1對w2錯:DS作為代碼段基址存放器,只能接納AX傳來的數據w3對w4錯:LEA為把源操作數的有效地址傳送給目的操作數,所以源操作數不應該是立刻數等非存儲器的尋址方式。w5錯,ADD指令不能在一個指令周期中完成來自存儲器的兩個操作數的相加運算w6錯,MUL指令為隱含目的操作數的指令,默許的目的操作數為存放器AL
49、AXw7錯,SHL為邏輯左移指令,當移位次數超越1時,次數要運用CL存放器提供,不能用立刻數等其它方式。w8對w9錯:MOV指令在一個指令周期中不能完成兩個內存單元之間的數據傳送w10 對傳送類指令w1、數據傳送指令movwMov al,01fwMov ax,2345hwMov da_byte,ofehwMov arybx,1234hw留意:不影響如下形狀標志位:進位CF、溢出OF、奇偶PF、符號標志位SF、輔助進位標志位AF、零標志位ZF傳送類指令w2、交換指令xchgwXCHG AL,BLwXCHG AX,BXwXCHG AX,arybxw留意:不影響如下形狀標志位:進位CF、溢出OF、奇
50、偶PF、符號標志位SF、輔助進位標志位AF、零標志位ZF傳送類指令w3、取標志位指令LAHFw 指令功能:AH FR70SFZFAFPFCFAHFR低8位01234567傳送類指令w4、存標志位指令SAHFw 指令功能:AH FR70w留意:影響如下形狀標志位:FR中的標志位分布由低到高:第零位為進位CF、第二位為奇偶PF、第四位為輔助進位標志位AF、第六位為零標志位ZF 、第七位為符號標志位SFwMOV AH,11000000BwSAHF傳送類指令w5、標志壓棧指令PUSHFw指令功能:w SP SP-2w 棧頂字單元 FRw留意:不影響如下形狀標志位w5、標志出棧指令POPFw 指令功能:
51、w棧頂字單元 FRw SP SP+2w留意:影響一切標志位傳送類指令w6、裝入有效地址指令LEAw指令格式:LEA DEST,SRCw指令功能:將SRC的有效地址傳送到目的16位通用存放器中。w留意:不影響標志位w7、裝入地址指針指令LDSLESw指令格式:LDS DEST,SRCw指令功能:DEST SRCw DS ES SRC+2算術運算類指令w加法指令w1不帶進位加法指令ADDw格式: ADD OPD,OPSw執行的操作:OPD + OPS OPDw例如:ADD BX,SIw ADD DA_WORD,0F8CHw ADD DL,TABBXw留意:對標志存放器AF、CF、SF、ZF、OF、
52、PF有影響標志存放器wOF overflow flag 溢出標志 操作數超出機器能表示的范圍表示溢出,溢出時為1. SF sign Flag 符號標志 記錄運算結果的符號,結果負時為1. ZF zero flag 零標志 運算結果等于0時為1,否那么為0. CF carry flag 進位標志 最高有效位產生進位時為1,否那么為0. AF auxiliary carry flag 輔助進位標志 運算時,第3位向第4位產生進位時為1,否那么為0. PF parity flag 奇偶標志 運算結果操作數位為1的個數為偶數個時為1,否那么為0. 標志存放器wNV:沒有溢出,這是OverFlow位(O
53、F)的值,分別為NV(沒溢出和OV(溢出了。這個標志位是反映上一個指令運算的結果能否溢出。 PL:符號標志位(SF)的值,分別是NG負/PL(正 NZ:零標志位(ZF)的值,分別是ZR(零/NZ非零,表示上一指令的結果。如:xor ax,ax后,這一位就會變為ZR。 NA:輔助進位標志位AF的值,分別為AC(有進位/NA沒有進位。 PO:奇偶標志位PF的值,分別是PE偶/PO奇 NC:進位標志位CF的值,分別是CY(進位/NC(沒有進位 ADD DL,0A4H的結果對標志位的影響w 1 1 1 0 0 1 0 1w +) 1 0 1 0 0 1 0 0w 1 1 0 0 0 1 0 0 1 符
54、號位有進位 CF=1符號位為1,SF=1無進位, AF=0結果不為0,那么ZF=0;結果無溢出,那么OF=0;結果中有奇數個1,那么PF=0。算術運算類指令w2帶進位加法指令ADCw格式:ADC OPD,OPSw執行的操作:OPD十OPSCFOPDw其中CF為進位位的值。w例如:ADC AX,DX;AXDXAXw留意:對標志位的影響同普通加法指令。w3增量指令INC加1指令w格式: INC OPD w執行的操作:OPD 1 OPDw例如: INC DX;DX1DXw留意:操作數可以是字和字節,且為無符號數。只能早存放器和內存單元中。w 影響除CF外的5個標志位。4.4 8086指令簡介w2.
55、減法指令w1不帶借位減法指令SUBw格式: SUB OPD, OPSw執行的操作: OPDOPS OPDw例如:SUB AX,DX;AXDXAXw同加法指令一樣影響標志位AF:有借位,CF:有借位w2帶借位減法指令SBBw格式:SBB OPD, OPSw執行的操作:OPD OPS-CF OPDw其中CF為進位位的值。w例如:SBB AX,DXw對標志位的影響同不帶借位減法指令。4.4 8086指令簡介w3減量指令DEC減1指令w格式:DEC OPDw執行的操作: OPD 一1 OPDw例如:DEC CX ; CX1CXw影響除CF的其它標志位 w4求負數指令NEGw格式:NEG OPDw指令功
56、能:OPD 0-OPDw留意:操作數可以是字節和字,且是補碼表示的無有符號數。只能在通用存放器和內存單元中。留意溢出OF和CF的變化w5算術比較指令CMPw格式:CMP OPD ,OPSw執行的操作:OPD OPSw該指令與SUB指令一樣執行減法操作,但它并不保管結果,只是根據結果設置條件標志位。CMP指令后往往跟一條條件轉移指令,根據比較結果產生不同的程序分支。w例如:CMP AX,BX; AXBXw假設指令執行前CF=1,AX=1000H,BX=0100H。w那么指令執行后CF=0,ZF=0,OF=0,SF=0,PF=1。4.4 8086指令簡介w3乘法指令wMUL無符號數乘法IMUL帶符
57、號數乘法w1MUL無符號數乘法指令w格式:MULOPSw執行的操作:w字節操作數:AL* OPSAXw字操作數:AX* OPSDX:AXw雙字操作數:EAX* OPSEDX:EAXw例如:MUL CLw假設指令執行前AL=0B4H,CL=11H。w那么指令執行后AX=0BF4H。wMUL指令只影響CF、OF:假設是AH字節乘法或者DX字乘法為全0,那么CF和OF=0,否那么CF=OF=1。4.4 8086指令簡介w2IMUL帶符號數乘法指令w格式:IMUL OPSw執行的操作與MUL一樣,但兩個操作數均是帶符號的補碼數。w例如:IMUL CLw對標志位的影響同MUL指令。4.4 8086指令簡
58、介w4除法指令wDIV無符號數除法指令wIDIV帶符號數除法指令w1DIV無符號數除法指令w格式:DIV OPSw假設OPS為字節類型,那么:wAX/OPS的商ALwAX/OPS的余數AHw假設OPS為字類型,那么:wDX:AX/OPS的商AX DX:AX/OPS的余數DXw對標志位無有效影響。4.4 8086指令簡介w以上幾種方式商和余數均為無符號數。w2IDIV帶符號數除法指令w格式:IDIV OPSw執行的操作:與DIV一樣,但操作數必需是帶符號補碼數,商和余數也都是帶符號數,且余數的符號和被除數的符號一樣。w例如:IDIV BLw假設指令執行前AX=0400H,BL=0B4H。w那么指
59、令執行后AL=0F3H商,AH=24H余數)4.4 8086指令簡介w3字節和字的符號擴展指令wCBW:運用AHwCWD:運用DXw主要用于除法指令的被除數擴位,對標志位無影響。4.4 8086指令簡介w6調整指令w1DAA 加法的緊縮BCD碼十進制調整指令w格式:DAAw這條指令之前必需執行ADD或ADC指令。加法指令必需把兩個緊縮BCD碼相加,并把相加結果存放在AL存放器中。w假設AF標志輔助進位位為1,或者AL存放器的低4位是16進制的AF中的恣意一位數,那么AL 存放器內容加06H修正,且將AF位置1;w例如:DAAw假設指令執行前AL=3AH,AF=0,CF=0。w那么指令執行后AL
60、=40H,AF=1,CF=0w假設CF標志為1;w或者AL存放器的高4位是AF中的恣意一位數,那么AL存放器內容加60H修正,并將CF位置1;4.4 8086指令簡介w例如:DAAw假設指令執行前 AL=F8H,AF=0,CF=0。w那么指令執行后 AL=58H,AF=1,CF=1。w假設AL存放器的高4位和低4位都滿足以上條件,那么將AL存放器的內容加66H。w例如:DAAw假設指令執行前 AL=0AH,AF=0,CF=1。w那么指令執行后 AL=70H,AF=1,CF=04.4 8086指令簡介w2DAS減法的緊縮BCD碼十進制調整指令w格式:DASw執行的操作:把AL中的兩個緊縮BCD碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 室內釣魚館管理制度
- 家屬等候區管理制度
- 庫房門進出管理制度
- 形象崗衛生管理制度
- 影像科臺賬管理制度
- 微型消防臺管理制度
- 快消品應急管理制度
- 快餐店后廚管理制度
- 總分包勞務管理制度
- 患者等候室管理制度
- 大洲大洋說課課件
- 招聘心里測試題及答案
- 高校教師資格證考試《高等教育學》真題及解析(2025年新版)
- T/SHSOT 015.1-2024皮膚角質層膠帶剝離方法及應用第1部分:角質層剝離方法
- 上海市靜安區2023-2024學年八年級下學期期末語文試題(解析版)
- 2025年中醫基礎理論考試試題及答案
- 銀行個人資產證明信(8篇)
- 合同款項代付協議書
- 2025甘肅省農墾集團有限責任公司招聘生產技術人員145人筆試參考題庫附帶答案詳解
- 2025年春季《中華民族共同體概論》第四次平時作業-國開(XJ)-參考資料
- 2025至2030年中國豆角絲行業投資前景及策略咨詢報告
評論
0/150
提交評論