微型計算機技術及應用3_第1頁
微型計算機技術及應用3_第2頁
微型計算機技術及應用3_第3頁
微型計算機技術及應用3_第4頁
微型計算機技術及應用3_第5頁
已閱讀5頁,還剩250頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、微型計算機原理及應用技術清華大學出版社清華大學出版社微型計算機概述微型計算機概述8086微處理器微處理器8086的尋址方式和指令系統的尋址方式和指令系統微型計算機和外設的數據傳輸微型計算機和外設的數據傳輸串并行通信和接口技術串并行通信和接口技術中斷控制器、中斷控制器、DMA控制器和計數器控制器和計數器/定時器定時器模模/數和數數和數/模轉換模轉換鍵盤和鍵盤和LED顯示顯示時段數據處理代表產品制造工藝集成度(管/片)時鐘頻率執行時間第一代19714位低檔8位Intel4004Intel4040、8008PMOS20001MHz20 us第二代1974高檔8位Intel8080、8085Z80MC

2、6800、6802NMOS840024MHz12 us第三代197816位Intel8086、8088Z8000MC68000HMOS200006000048MHz0.5 us1980高檔16位Intel80286MC6801010000010MHz0.2 us第四代198032位Intel80386、80486Z80000MC6802015000050000016100MHz0.1 us第五代1993Pentium系列5000000以上150MHz以上微處理器也稱微處理器也稱CPU,是由大規模集成電路組成的,是由大規模集成電路組成的, 本身具本身具有運算能力和控制能力,能執行一定的指令系統的

3、器件,是有運算能力和控制能力,能執行一定的指令系統的器件,是微型計算機的核心。微型計算機的核心。一般具有下列功能:一般具有下列功能:可以進行算術和邏輯運算可以進行算術和邏輯運算可以保存少量數據可以保存少量數據能和存儲器、外設交換數據能和存儲器、外設交換數據能對指令進行譯碼并執行指令規定的動作能對指令進行譯碼并執行指令規定的動作提供整個系統所需要的控制信號和定時時鐘提供整個系統所需要的控制信號和定時時鐘完成程序流向控制完成程序流向控制 算術邏輯部件(算術邏輯部件(ALU)專門用來處理各種數據信息,可進行加、減、乘、除算術運算專門用來處理各種數據信息,可進行加、減、乘、除算術運算和與、或、非、異或

4、等邏輯運算。和與、或、非、異或等邏輯運算。累加器累加器功能:作為功能:作為ALU的一個操作數輸入端。的一個操作數輸入端。用于存放用于存放ALU的運算結果。的運算結果。輸入輸入/輸出指令一般也通過累加器來完成。輸出指令一般也通過累加器來完成。通用寄存器通用寄存器功能:用來暫時存放參加運算的操作數、中間結果或地址。功能:用來暫時存放參加運算的操作數、中間結果或地址。暫存寄存器(暫存寄存器(TMP)功能:用來暫存從數據總線或通用寄存器送來的操作數,并功能:用來暫存從數據總線或通用寄存器送來的操作數,并將該數據送入將該數據送入ALU進行運算,同時,它也能將數據送到內部數進行運算,同時,它也能將數據送到

5、內部數據總線。據總線。標志寄存器(標志寄存器(F)功能:用來保存功能:用來保存ALU操作結果的特殊狀態。操作結果的特殊狀態。指令部件指令部件PC)PC)功能:存放指令地址。功能:存放指令地址。程序執行過程中,首先由程序執行過程中,首先由PCPC指出當前要執行指令的地址,指出當前要執行指令的地址,當該指令取出后,當該指令取出后,PCPC的內容會自動加的內容會自動加1 1(除轉移指令外),(除轉移指令外),指向按順序排列的下一條指令的地址。指向按順序排列的下一條指令的地址。指令寄存器指令寄存器IRIR功能:存放當前要執行的指令的內容。功能:存放當前要執行的指令的內容。包括操作碼和地址碼兩部分。操作

6、碼送往指令譯碼器,包括操作碼和地址碼兩部分。操作碼送往指令譯碼器,地址碼送至操作數地址形成電路。地址碼送至操作數地址形成電路。指令譯碼器指令譯碼器IDID功能:分析指令功能,產生相應操作的控制電位。功能:分析指令功能,產生相應操作的控制電位。堆棧指示器(堆棧指針)堆棧指示器(堆棧指針)SPSP時序部件時序部件:用來產生計算機各部件所需的定時信號。用來產生計算機各部件所需的定時信號。時鐘系統時鐘系統 脈沖源脈沖源 功能:產生具有一定頻率和脈寬的脈沖信號(主脈功能:產生具有一定頻率和脈寬的脈沖信號(主脈沖)。一般采用石英晶體振蕩器,因為它頻率穩定。沖)。一般采用石英晶體振蕩器,因為它頻率穩定。 時

7、鐘啟停邏輯時鐘啟停邏輯 功能:控制啟停主脈沖信號開關,按指令要求,開啟功能:控制啟停主脈沖信號開關,按指令要求,開啟或關閉時鐘脈沖序列?;蜿P閉時鐘脈沖序列。脈沖分配器脈沖分配器 功能:產生計算機各部分所需要的能按一定順序逐個功能:產生計算機各部分所需要的能按一定順序逐個出現的節拍電位或節拍脈沖的定時信號,以控制和協調計算出現的節拍電位或節拍脈沖的定時信號,以控制和協調計算機各部分有節奏的動作。機各部分有節奏的動作。微操作控制部件微操作控制部件 計算機在執行一條指令時,總是把一條指令分成若計算機在執行一條指令時,總是把一條指令分成若干基本操作,稱為微操作。干基本操作,稱為微操作。 根據指令產生計

8、算機各部件所需要的控制信號。根據指令產生計算機各部件所需要的控制信號。 這些控制信號是由指令譯碼器的輸出電位、脈沖發這些控制信號是由指令譯碼器的輸出電位、脈沖發生器產生的節拍電位、節拍脈沖以及外部的狀態信號等生器產生的節拍電位、節拍脈沖以及外部的狀態信號等進行組合而產生的。進行組合而產生的。 微操作控制部件按一定的時間順序發出一系列微操微操作控制部件按一定的時間順序發出一系列微操作控制信號,以完成指令所規定的全部操作。作控制信號,以完成指令所規定的全部操作。 由由CPU、存儲器、存儲器、I/O接口電路和系統總線等構成的一個完整的計算機。接口電路和系統總線等構成的一個完整的計算機。 有了總線結構

9、,系統中各功能部件之間的相互關系就變為各個部有了總線結構,系統中各功能部件之間的相互關系就變為各個部件面向總線的單一關系。一個部件只要符合總線標準,就可以連件面向總線的單一關系。一個部件只要符合總線標準,就可以連接到采用這種總線標準的系統中,從而使系統很容易得到擴展。接到采用這種總線標準的系統中,從而使系統很容易得到擴展。 以微型計算機為主體,配上系統軟件和外設,以微型計算機為主體,配上系統軟件和外設,就構成了微型計算機系統。就構成了微型計算機系統。 系統軟件系統軟件 常用的名詞術語常用的名詞術語1.1. 具有十六個不同的數字符號,即具有十六個不同的數字符號,即0-90-9和和A-FA-F三種

10、數制對照三種數制對照表表余余0 0 【1-3】 10100+1101=100001 10100+1101=100001 【1-4】 100001-10100=1101100001-10100=1101 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 + 1 1 0 1 - 1 1 0 1 0 + 1 1 0 1 - 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 【1-5】 110111011011=10001111 1011=10001111 【1-6】 1110011100101=101101=10

11、11111 1 1 0 1 1 0 1 1 1 0 1 1 0 1 商商 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 + 1 1 0 1 1 1 + 1 1 0 1 1 1 1 0 0 0 1 1 1 11 0 0 0 1 1 1 1 X+0X+0 = = 補碼補碼3.補碼的定義補碼的定義求法與應用求法與應用 47主要內容: 指令系統的一般概念 對操作數的尋址方式 六大類指令的操作原理:操作碼

12、的含義操作碼的含義指令對操作數的要求指令對操作數的要求指令執行的結果指令執行的結果8086的尋址方式和指令系統的尋址方式和指令系統 3.3.4 3.3.4 串操作指令串操作指令 49回憶一、指令與指令系統指令:控制計算機完成某種操作的命令指令系統:處理器所能識別的所有指令的集合指令的兼容性:同一系列機的指令都是兼容的。50指令中應包含的信息:運算數據的來源運算數據的來源運算結果的去向運算結果的去向執行的操作執行的操作51操作碼 操作數,操作數執行何種操作執行何種操作目標操作數目標操作數源操作數源操作數參加操作的數據或數據存放的地址參加操作的數據或數據存放的地址52立即數寄存器存儲器表征參加操作

13、的數據本身表征參加操作的數據本身表征數據存放的地址表征數據存放的地址53立即數操作數 立即數本身是參加操作的數據,可以是8位或16位,只能作為源操作數。 例: MOV AX,1234H MOV BL,22H 立即數無法作為目標操作數 立即數可以是無符號或帶符號數,其數值應在可取值范圍內。54寄存器操作數 參加運算的數存放在指令給出的寄存器中,可以是16位或8位。 例: MOV AX,BX MOV DL,CH55存儲器操作數 參加運算的數存放在存儲器的某一個或某兩個單元中。 表現形式: 立即數或寄存器立即數或寄存器 中的內容是存放所尋找數據的單元的偏移地址中的內容是存放所尋找數據的單元的偏移地址

14、56存儲器操作數例 例: MOV AX,1200H MOV AL,1200H22H11H1200H偏移地址偏移地址AH AL 57 指令的字長影響指令的執行速度 對不同的操作數,指令執行的時間不同: 存儲器快!快!立即數立即數寄存器寄存器指令字長:指令字長:由操作碼的長度、操作數地址長度、操作數由操作碼的長度、操作數地址長度、操作數個數決定。個數決定。尋找操作數所在地址的方法尋找操作數所在地址的方法59 操作數可能的來源或存放處: 由指令直接給出 寄存器 內存單元 尋找操作數所在地址的方法可以有三種大類型 指令直接給出的方式 存放于寄存器中的尋址方式 存放于存儲器中的尋址方式3.2.1 3.2

15、.1 立即尋址立即尋址3.2.2 寄存器尋址寄存器尋址3.2.3 直接尋址直接尋址 如指令前面沒有用前綴指明操作數在哪一段,則默認段寄存器如指令前面沒有用前綴指明操作數在哪一段,則默認段寄存器為數據段寄存器為數據段寄存器DS。例:例:MOV AX ,1070H ;將;將DS:1070H的內容送到的內容送到AL DS:1071H的內容送到的內容送到AH如要對其他段寄存器所指出的存儲區進行直接尋址,則本條指如要對其他段寄存器所指出的存儲區進行直接尋址,則本條指令前必須用前綴指出段寄存器名。令前必須用前綴指出段寄存器名。例:例:CS:MOV AX ,1070H ;將;將CS:1070H的內容送到的內

16、容送到AL CS:1071H的內容送到的內容送到AH或或 MOV AX , CS:1070H3.2.4 寄存器間接尋址寄存器間接尋址 特點:特點:1、操作數實際一定存放在存儲器中。、操作數實際一定存放在存儲器中。2、寄存器可以也只可以為:、寄存器可以也只可以為:BX、BP、SI、DI。3、源操作數或者目的操作數。、源操作數或者目的操作數。4、采用間接尋址的寄存器要用、采用間接尋址的寄存器要用“ ”括起來。括起來。注意:注意:1、如指令前面沒有用前綴指明操作數在哪一段,則默認段寄存器為數據、如指令前面沒有用前綴指明操作數在哪一段,則默認段寄存器為數據段寄存器段寄存器DS;但若寄存器為;但若寄存器

17、為BP,則默認段寄存器為數據段寄存器,則默認段寄存器為數據段寄存器SS。2、如果要改變段寄存器,則必須在該指令前加前綴指出。、如果要改變段寄存器,則必須在該指令前加前綴指出。3、采用寄存器間接尋址時,允許在指令中指定一個位移量,這樣,有效、采用寄存器間接尋址時,允許在指令中指定一個位移量,這樣,有效地址就是寄存器的內容加上位移量得到。位移量可為地址就是寄存器的內容加上位移量得到。位移量可為8位,也可為位,也可為16位。位。65寄存器間接尋址 由寄存器間接給出操作數的偏移地址; 存放偏移地址的寄存器稱為間址寄存器,它們是:BX,BP,SI,DI 操作數的段地址(數據處于哪個段)取決于選擇哪一個間

18、址寄存器: BX,SI,DI BP默認在數據段默認在數據段默認在堆棧段默認在堆棧段66寄存器間接尋址 寄存器間接尋址基址尋址(間址基址尋址(間址寄存器為基址寄存寄存器為基址寄存 器器BX,BP)變址尋址(間址變址尋址(間址寄存器為變址寄存寄存器為變址寄存 器器SI,DI) 若要對其他段寄存器所指的區域進行尋址,則必須在該若要對其他段寄存器所指的區域進行尋址,則必須在該指令前用前綴指出段寄存器名。指令前用前綴指出段寄存器名。例:若例:若ES=3000H,BX=3000HES:MOV AX ,BX ;將;將33000H單元的內容送到單元的內容送到AL 33001H單元的內容送到單元的內容送到AH

19、+ 若用若用BP寄存器,則默寄存器,則默認的段寄存器是認的段寄存器是SS,若用若用BX寄存器,則默寄存器,則默認的段寄存器是認的段寄存器是DS。 在寄存器間接尋址時在指令中加入了一個在寄存器間接尋址時在指令中加入了一個8位或位或16位位移量。位位移量。 +格式:格式: MOV AX , BX+6 MOV AX , 6BX MOV AX , BX+6 1MOV(Move):傳送指令):傳送指令MOV指令的格式為:指令的格式為:MOV dst,src ;dstsrc功能:將源操作數功能:將源操作數src復制到目的操作數復制到目的操作數dst中,結果目的操作中,結果目的操作數的內容等于源操作數的內容

20、,源操作數數的內容等于源操作數的內容,源操作數src的內容不變。的內容不變。對標志位的影響:無對標志位的影響:無語法格式:語法格式:MOV reg/mem/seg ,reg/mem/seg/imm MOV WORD PTR1000H ,AX MOV CS:BX+SI+100 ,AX MOV BYTE PTRBX ,AL MOV SI ,AL MOV AX ,BX MOV AX ,ES:BX+SI+100 MOV ES ,DX MOV DS ,AX MOV SS ,BX MOV ES ,SS:DI+100 MOV DX ,DS MOV BX ,ES MOV WORDPTRBX+SI+200 ,S

21、S MOV BX ,CS MOV DX ,AX MOV BL ,DH MOV CX ,DI MOV DX ,SI+100 MOV DI ,BX+DI+200 MOV WORD PTRDI ,DX MOV WORD PTRBX+SI+200 ,DI MOV AX ,77H ;默認為;默認為0077H MOV AL ,77H MOV DI ,6180H MOV WORD PTRBX+SI+500 ,1000H MOV BYTE PTRDI ,66 MOV DS:BP ,6180H 通用傳送指令可傳送通用傳送指令可傳送8位數據,也可傳送位數據,也可傳送16位數據,具體位數據,具體決定于指令中涉及的寄

22、存器是決定于指令中涉及的寄存器是8為還是為還是16位。位。 MOV CX ,AL (X) MOV CL ,AX (X) 通用傳送指令中總是即有源操作數,又有目的操作數,并通用傳送指令中總是即有源操作數,又有目的操作數,并且兩者之中至少有一個要用寄存器來指出。且兩者之中至少有一個要用寄存器來指出。不能在兩個內存單元之間直接傳送數據。不能在兩個內存單元之間直接傳送數據。 MOV seg , seg ;錯誤;錯誤 MOV mem ,mem ;錯誤;錯誤CS、IP這兩個寄存器不能作為目的操作數。這兩個寄存器不能作為目的操作數。用用BX、SI、DI來間接尋址時,默認的段寄存器是來間接尋址時,默認的段寄存

23、器是DS;用;用BP來間接尋址時,默認的段寄存器是來間接尋址時,默認的段寄存器是SS。在修改在修改SS和和SP的指令之間不要插入其他指令。的指令之間不要插入其他指令。所有的通用傳送指令都不改變狀態標志。所有的通用傳送指令都不改變狀態標志。 例:錯誤的例:錯誤的MOV 指令如下所示:指令如下所示:MOV AX,BL ;類型不匹配;類型不匹配MOV DS,1000H ;不允許立即數送段寄存器;不允許立即數送段寄存器MOV BX ,SI ;不允許內存操作數之間傳送;不允許內存操作數之間傳送MOV ES,CS ;不允許段寄存器之間傳送;不允許段寄存器之間傳送MOV CS,AX ;CS不能作為目的操作數

24、不能作為目的操作數例:設例:設A、B是已定義的字節變量,以下是一些錯誤和正確的指是已定義的字節變量,以下是一些錯誤和正確的指令。令。MOV AX,B ;錯誤,類型不匹配;錯誤,類型不匹配MOV A,0 ;正確,;正確,MASM可以判斷出要送字節可以判斷出要送字節02.堆棧指令堆棧指令堆棧概念堆棧概念 - 存儲器的一段區域,按存儲器的一段區域,按“先進后出先進后出”的原則進行存出操作。的原則進行存出操作。8086/8088系統,堆棧位于堆棧系統,堆棧位于堆棧段,其段地址由段,其段地址由SS指示,指示,SP寄存器作為指針,寄存器作為指針,SP內容內容始終指向棧頂所在存儲單元。始終指向棧頂所在存儲單

25、元。作用:在調用一個過程時,保存返回地址;暫時存放作用:在調用一個過程時,保存返回地址;暫時存放寄存器或存儲器單元操作數的內容。寄存器或存儲器單元操作數的內容。 堆棧堆棧SP:01F8SP:01FASP:01FCSP:01FESPAA BB(執行(執行PUSH AX之前)之前)堆棧堆棧SP:01F8SP:01FASP:01FCSP:01FESPAA BB(執行(執行PUSH AX之后)之后)1101H1101H AX堆棧堆棧SP:01F8SP:01FASP:01FCSP:01FESPAA BB(執行(執行POP AX之后)之后)1101H AX123堆棧操作總是按字操作的。堆棧操作總是按字操作

26、的。每執行一條壓棧指令,堆棧指針減每執行一條壓棧指令,堆棧指針減2,推入堆棧的數據放在棧頂,推入堆棧的數據放在棧頂,低位字節放在較低地址單元(真正的棧頂單元),高位字節放低位字節放在較低地址單元(真正的棧頂單元),高位字節放在較高單元。出棧時正好相反,每彈出一個字,堆棧指針加在較高單元。出棧時正好相反,每彈出一個字,堆棧指針加2。CS寄存器的值可以壓入堆棧,但不能從堆棧中彈出值到寄存器的值可以壓入堆棧,但不能從堆棧中彈出值到CS。一定要遵循一定要遵循“先進后出先進后出”的原則。的原則。直接的輸入直接的輸入/輸出指令輸出指令格式:格式: IN AL IN AL ,PORT OUT PORT PO

27、RT OUT PORT ,AL AL ;字節;字節IN AX IN AX ,PORT OUT PORT PORT OUT PORT ,AX AX ;字;字PORTPORT:外設的端口地址:外設的端口地址例:例:IN AL IN AL ,50H 50H ;將;將50H50H端口的字節讀入端口的字節讀入ALAL IN AX IN AX ,70H 70H ;將;將70H70H端口的字節讀入端口的字節讀入ALAL, 將將71H71H端口的字節讀入端口的字節讀入AHAH。 IN AX IN AX ,71H 71H ;將;將71H71H端口的字節讀入端口的字節讀入ALAL, 將將72H72H端口的字節讀入

28、端口的字節讀入AHAH。 OUT 50H OUT 50H ,AL AL ;將;將ALAL中的字節輸出到中的字節輸出到50H50H端口端口 OUT 80H OUT 80H ,AX AX ;將;將ALAL輸出到輸出到70H70H端口,端口,AXAX輸出到輸出到71H71H。 間接的輸入間接的輸入/ /輸出指令輸出指令格式:格式:IN AL IN AL ,DX OUT DX DX OUT DX ,AL AL ;字節;字節IN AX IN AX ,DX OUT DX DX OUT DX ,AX AX ;字;字例:例:IN AL IN AL ,DX DX ;從;從DXDX所指的端口讀取字節送到所指的端口

29、讀取字節送到ALAL。 IN AX IN AX ,DX DX ;從;從DXDX所指的端口讀取字節送到所指的端口讀取字節送到ALAL, 從從DX+1DX+1所指的端口讀取字節送到所指的端口讀取字節送到AHAH。 OUT DX OUT DX ,AL AL ;將;將ALAL中的字節輸出到中的字節輸出到DXDX所指的端口中。所指的端口中。 OUT DX OUT DX ,AX AX ;將;將ALAL中的字節輸出到中的字節輸出到DXDX所指的端口中,所指的端口中, 將將AHAH中的字節輸出到中的字節輸出到DX+1DX+1所指的端口中。所指的端口中。必須是用累加器。必須是用累加器。用直接輸入用直接輸入/ /

30、輸出指令時,端口號不要用輸出指令時,端口號不要用“ ” ”括括起來,且尋址范圍為起來,且尋址范圍為02550255(0000H00FFH0000H00FFH)。)。用間接輸入用間接輸入/ /輸出指令時,只能用輸出指令時,只能用DXDX寄存器,尋址范寄存器,尋址范圍為圍為065535065535(0000HFFFFH0000HFFFFH)。)。 ALAL DSDS:(:(BX+ALBX+AL) LEA 指令與指令與MOV 指令的區別:指令的區別:LEA SI,BUFF指令是將標號指令是將標號BUFF的偏移地址送入寄存器中;的偏移地址送入寄存器中;MOV SI,BUFF指令是將標號指令是將標號BU

31、FF所指存儲單元的內容送入所指存儲單元的內容送入SI。BUFF =0123454800FEFFLEA SI,BUFF;執行后:(執行后:(SI)=0002HMOV SI,BUFF;執行后:(執行后:(SI)=0048H段起始地址段起始地址57H13H68H24HDS:2480HDS:2481HDS:2482HDS:2483H 13 57 24 68 算術運算指令涉及的一些問題算術運算指令涉及的一些問題無符號數無符號數:將所有的數位都看成數據位,只有正數沒有負數。:將所有的數位都看成數據位,只有正數沒有負數。8位無符號位無符號數值的范圍為數值的范圍為0255,16位無符號數值的范圍為位無符號數值

32、的范圍為065535。有符號數有符號數:將最高位作為符號,數據本身用補碼表示,即可表示正數,也:將最高位作為符號,數據本身用補碼表示,即可表示正數,也可表示負數??杀硎矩摂?。8位有符號數值的范圍為位有符號數值的范圍為-128+127,16位無符號數值的范位無符號數值的范圍為圍為-32768+32767。對于加、減法,無符號數和有符號數可采用同一套指令,對于乘、除法,對于加、減法,無符號數和有符號數可采用同一套指令,對于乘、除法,無符號數和有符號數不能采用同一套指令。無符號數和有符號數不能采用同一套指令。無符號數和有符號數可采用同一套加、減法指令有兩個條件:無符號數和有符號數可采用同一套加、減法

33、指令有兩個條件: 兩個操作數必須同為無符號數或有符號數。兩個操作數必須同為無符號數或有符號數。 要用不同的方法檢測無符號數或有符號數的運算結果是否溢出。要用不同的方法檢測無符號數或有符號數的運算結果是否溢出。對于無符號數運算,用對于無符號數運算,用CF是否為是否為1來判斷是否產生溢出;對于來判斷是否產生溢出;對于有符號數運算,用有符號數運算,用OF是否為是否為1來判斷是否產生溢出。來判斷是否產生溢出。所有的算術運算指令,都會影響狀態標志。具體有這樣一些規則:所有的算術運算指令,都會影響狀態標志。具體有這樣一些規則:當無符號數運算產生溢出時,當無符號數運算產生溢出時,CF=1當有符號數運算產生溢

34、出時,當有符號數運算產生溢出時,OF=1運算結果為運算結果為0,ZF=1運算結果為負數,運算結果為負數,SF=1 運算結果中有偶數個運算結果中有偶數個1,PF=1 加法指令加法指令 例:例:ADD AL ADD AL ,BL BL ;將;將ALAL內容與內容與BLBL內容相加,結果送到內容相加,結果送到ALAL。 ADD AX ADD AX ,CX CX ;將;將AXAX內容與內容與CXCX內容相加,結果送到內容相加,結果送到AXAX。 ADD AX ADD AX ,1000H 1000H ;將;將AXAX內容與內容與1000H1000H,1001H1001H內容內容 相加,結果送到相加,結果

35、送到AXAX ADD BX ADD BX ,SI+100SI+100 ADD WORD PTRDI+200 ADD WORD PTRDI+200 ,CXCX ADD AX ADD AX ,100H100H ADD BYTE PTRBX+SI+100 ADD BYTE PTRBX+SI+100 ,2020例:將兩個分別存放在例:將兩個分別存放在2000H2000H和和3000H3000H開始的存儲單元的開始的存儲單元的4 4字節字節無符號數相加,結果存放到無符號數相加,結果存放到2000H2000H開始的單元。(地位在前,開始的單元。(地位在前,高位在后)高位在后) MOV SI MOV SI

36、,2000H2000H MOV AX MOV AX ,SISI MOV DI MOV DI ,3000H3000H ADD AX ADD AX ,DIDI MOV SI MOV SI ,AXAX MOV AX MOV AX ,SI+2SI+2 ADC AX ADC AX ,DI+2DI+2 MOV SI+2 MOV SI+2 ,AXAX例:例: INC AXINC AX INC CL INC CL INC SI+100 INC SI+100 INC 2000H INC 2000HADDADD、ADCADC指令對標志位指令對標志位AFAF、OFOF、PFPF、ZFZF、CFCF有影響,有影響,I

37、NCINC指令對標志位也有影響,但不影響指令對標志位也有影響,但不影響CFCF。例:例:SUB AL SUB AL ,BL BL ;將;將ALAL內容與內容與BLBL內容相減,結果送到內容相減,結果送到ALAL。 SUB AX SUB AX ,CX CX ;將;將AXAX內容與內容與CXCX內容相減,結果送到內容相減,結果送到AXAX。 SUB AX SUB AX ,1000H 1000H ;將;將AXAX內容與內容與1000H1000H,1001H1001H內容內容 相減,結果送到相減,結果送到AXAX。 SUB BX SUB BX ,SI+100SI+100 SUB WORD PTRDI+

38、200 SUB WORD PTRDI+200 ,CXCX SUB AX SUB AX ,100H100H SUB BYTE PTRBX+SI+100 SUB BYTE PTRBX+SI+100 ,2020例:將兩個文分別存放在例:將兩個文分別存放在2000H2000H和和3000H3000H開始的存儲單元的開始的存儲單元的4 4字節無符號數相減,結果存放到字節無符號數相減,結果存放到2000H2000H開始的單元。(地開始的單元。(地位在前,高位在后)位在前,高位在后) MOV SI MOV SI ,2000H2000HMOV AX MOV AX ,SISIMOV DI MOV DI ,300

39、0H3000HSUB AX SUB AX ,DIDIMOV SI MOV SI ,AXAXMOV AX MOV AX ,SI+2SI+2SBB AX SBB AX ,DI+2DI+2MOV SI+2 MOV SI+2 ,AXAX 例:例: DEC AXDEC AX DEC CL DEC CL DEC SI+100 DEC SI+100 DEC 2000H DEC 2000H 例:例: NEG AXNEG AX NEG CL NEG CL NEG SI+100 NEG SI+100 NEG 2000H NEG 2000H 例:例: CMP AX CMP AX ,2000H2000H CMP AL

40、 CMP AL ,50H50H CMP AX CMP AX ,BX+DI+100BX+DI+100 CMP DX CMP DX ,DIDI 會影響標志位會影響標志位AFAF、CFCF、OFOF、PFPF、SFSF、ZFZF。 兩數相等,兩數相等,ZF=1ZF=1 兩數不等:兩數不等:a a)、無符號數:)、無符號數:CF=0CF=0,被減數大,減數??;,被減數大,減數小;CF=1CF=1,被減數小,減數大。,被減數小,減數大。b b)、有符號數:若)、有符號數:若OFOF和和SFSF值相同,則說明被減數比減數大;若值相同,則說明被減數比減數大;若OFOF和和SFSF值不值不同,則說明被減數比減

41、數小。同,則說明被減數比減數小。(2 2)帶符號數除法指令)帶符號數除法指令例:將兩個分別存放在例:將兩個分別存放在2000H2000H和和3000H3000H開始的存儲單開始的存儲單元的元的2 2字節組合字節組合BCDBCD碼數相加,結果存放到碼數相加,結果存放到2000H2000H開開始的單元。始的單元。 MOV SI ,2000HMOV AL ,SIMOV DI ,3000HADD AL ,DIDAAMOV SI ,ALMOV AL ,SI+1ADC AL ,DI+1DAAMOV SI+1 ,AL(5 5)非組合非組合BCDBCD碼的乘法調整指令碼的乘法調整指令例:例:MOV AL MO

42、V AL ,05H05H MOV BL MOV BL ,07H07H MUL BL MUL BL ;AX=0023HAX=0023H AAM AAM ;AH=03HAH=03H、AL=05H AL=05H 例:例:35357=57=5 MOV AX MOV AX ,0305H0305H AAD AAD ;AH=00HAH=00H、AL=23HAL=23H MOV BL MOV BL ,07H07H DIV BL DIV BL 0CFOPR0CFOPRCFOPRCFOPRCFOPRCFOPRCFOPRCFOPR 例:例: MOV SI MOV SI ,1000H1000H MOV DI MOV

43、DI ,2000H2000H MOV CX MOV CX ,100100 CLD CLD REP MOVSB REP MOVSB ;將源地址開始的;將源地址開始的100100 個字節送到目的地址個字節送到目的地址 REPREP指令:(指令:(CXCX)1 CX1 CX,當,當CX=0CX=0時,退出時,退出重復,執行其后面的程序。重復,執行其后面的程序。 例:例: MOV DI MOV DI ,1000H1000H MOV SI MOV SI ,2000H2000H CLD CLD MOV CX MOV CX ,0004H0004H REP CMPSB REP CMPSB JZ KKK JZ

44、KKK ;ZF=0ZF=0,表示,表示4 4個比較單元都相同個比較單元都相同REPZREPZ指令:指令:ZF=1ZF=1,條件滿足,執行重復,(,條件滿足,執行重復,(CXCX)1 CX1 CX, 當當CX=0CX=0時,退出重復,執行其后面的程序。時,退出重復,執行其后面的程序。ZF=0ZF=0,條件不滿足,退出重復,執行其后面的程序。,條件不滿足,退出重復,執行其后面的程序。REPNZREPNZ指令:與指令:與REPZREPZ的條件正好相反。的條件正好相反。 例:從例:從ESES段:段:3000H3000H單元開始的單元開始的5 5個單元中找到第一個單元中找到第一個與個與ALAL中內容相等

45、的單元,并使其內容增中內容相等的單元,并使其內容增1 1。 MOV AL MOV AL ,40H40HMOV DI MOV DI ,3000H3000HCLDCLDMOV CX MOV CX ,5 5MOV DX MOV DX ,CXCXREPNZ SCASBREPNZ SCASBJNZ AA1JNZ AA1SUB DX SUB DX ,CXCXDEC DXDEC DXMOV DI MOV DI ,DXDXINC BYTE PTR DI+3000hINC BYTE PTR DI+3000hAA1AA1: 例:將例:將0700H0700H單元開始的單元開始的5 5個字節的內容逐一取來,放個字節的

46、內容逐一取來,放在累加器中進行處理,處理后在送回到原內存單元。在累加器中進行處理,處理后在送回到原內存單元。 CLDCLDMOV SI MOV SI ,0700H0700HMOV CX MOV CX ,5 5MOV DI MOV DI ,SISIL1:LODSBL1:LODSBPUSH CXPUSH CXPOP CXPOP CXDEC CXDEC CXMOV DI MOV DI ,ALALINC DIINC DIJNZ LI JNZ LI (2 2)存字符串指令存字符串指令例:使例:使0404H0404H開始的開始的256256個單元清個單元清0 0。 CLDCLDLEA DI LEA DI

47、,0404H0404HMOV CX MOV CX ,0080H0080HXOR AX XOR AX ,AXAXREP STOSWREP STOSW控制轉移指令包括控制轉移指令包括5類指令:類指令:子程序調用和返回指令子程序調用和返回指令無條件轉移和條件轉移指令無條件轉移和條件轉移指令循環控制指令循環控制指令中斷指令中斷指令處理器控制指令處理器控制指令1.1.關于轉移指令和調用指令的尋址關于轉移指令和調用指令的尋址 a、段內直接轉移方式、段內直接轉移方式 指令中給出一個相對位移量,這樣,轉移的有效偏移地指令中給出一個相對位移量,這樣,轉移的有效偏移地址為址為IP當前內容加上一個當前內容加上一個8

48、位或位或16位位移量。位位移量。適用:適用: 條件轉移指令條件轉移指令 無條件轉移指令無條件轉移指令 調用指令調用指令注意:注意: 條件轉移指令中,只能用條件轉移指令中,只能用8位位移量。位位移量。 b b、段內間接轉移方式、段內間接轉移方式 轉移的有效偏移地址總是在寄存器中或轉移的有效偏移地址總是在寄存器中或者在內存單元中。者在內存單元中。適用:適用: 無條件轉移指令無條件轉移指令例:例:JMP 1000HJMP 1000H;直接轉移;直接轉移 JMP BX JMP BX ;間接轉移;間接轉移 JMP BX JMP BX ;間接轉移;間接轉移 c c、段間直接轉移方式、段間直接轉移方式 指令

49、中給出轉移地址的段值和偏移量。產生轉指令中給出轉移地址的段值和偏移量。產生轉移時,將段值代入移時,將段值代入CSCS中,將偏移量代入中,將偏移量代入IPIP中。中。 例:例:JMP 2000HJMP 2000H:1000H1000Hd d、段間間接轉移方式、段間間接轉移方式 轉移地址(轉移地址(IPIP、CSCS內容)用內存中內容)用內存中2 2個連續的個連續的字來替換。字來替換。 例:例:JMP DWORD PTR DI JMP DWORD PTR DI 轉移地址由轉移地址由DIDI、DI+1DI+1、DI+2DI+2、DI+3DI+3單元的內容單元的內容給出,其中給出,其中DIDI、DI+

50、1DI+1為偏移量,為偏移量,DI+2DI+2、DI+3DI+3為段地為段地址。址。 例:例: CALL 1000H CALL 1000H ;段內直接調用;段內直接調用 CALL AX CALL AX ;段內間接調用;段內間接調用 CALL 2500HCALL 2500H:3600H 3600H ;段間直接調用;段間直接調用 CALL DWORD PTR DI CALL DWORD PTR DI ;段間間接調用;段間間接調用a a、無條件轉移指令、無條件轉移指令例:例: JMP 1000H JMP 1000H ;段內直接轉移;段內直接轉移 JMP CX JMP CX ;段內間接轉移;段內間接轉

51、移 JMP 2000HJMP 2000H:0100H 0100H ;段間直接轉移;段間直接轉移 JMP DWORD PTR SI JMP DWORD PTR SI ;段間間接轉移;段間間接轉移 例:設例:設2000H2000H開始的區域中,存放著開始的區域中,存放著14H14H個無符號數,個無符號數,要求找出其中最大的一個數,并存放到要求找出其中最大的一個數,并存放到2000H2000H。 GTAMAXGTAMAX: MOV BX MOV BX ,2000H2000H MOV AL MOV AL ,BXBX MOV CX MOV CX ,14H14HP1P1: INC BXINC BX CMP

52、 AL CMP AL ,BXBX JAE P2 JAE P2 MOV AL MOV AL ,BXBXP2P2: DEC CXDEC CX JNZ P1 JNZ P1 MOV BX MOV BX ,2000H2000H MOV BX MOV BX ,ALAL例:在例:在4040個元素構成的數組中尋找第一個非個元素構成的數組中尋找第一個非0 0元素元素MOV CX MOV CX ,4040MOV SI MOV SI ,0FFH0FFHNEXTNEXT: INC SIINC SICMP BYTE PTR SI CMP BYTE PTR SI ,0 0LOOPZ NEXTLOOPZ NEXTJNZ K

53、KKJNZ KKKCALL DISPLAY1CALL DISPLAY1RETRETKKKKKK: CALL DISPLAY2CALL DISPLAY2RETRET中斷指令為程序員提供了軟件中斷手段。中斷指令為程序員提供了軟件中斷手段。中斷指令:中斷指令:INT nINT n中斷返回指令:中斷返回指令:IRETIRET執行執行INT nINT n指令時,將使指令時,將使CPUCPU轉到一個中斷處理程轉到一個中斷處理程序。此時,標志位被推入堆棧,序。此時,標志位被推入堆棧,SPSP2 2;然后清;然后清IFIF、TFTF;接著,將主程序的下一條指令的地址(斷點地;接著,將主程序的下一條指令的地址(

54、斷點地址)的段值和偏移量推入堆棧,址)的段值和偏移量推入堆棧,SPSP4 4。n n為中斷類為中斷類型號。型號。 (5 5)總線封鎖前綴總線封鎖前綴3.4 ASM86匯編語言中的標記、表達式和偽指令匯編語言中的標記、表達式和偽指令 機器語言:機器語言:用以二進制編碼的形式表示的機器指令組。用以二進制編碼的形式表示的機器指令組。用機器語言編制的程序稱為機器程序,又稱為目標程序,它能機器所識用機器語言編制的程序稱為機器程序,又稱為目標程序,它能機器所識別并執行。機器語言編寫程序易出錯、難修改、不易看懂。別并執行。機器語言編寫程序易出錯、難修改、不易看懂。高級語言:高級語言:用通用符號指令碼。用通用

55、符號指令碼。用高級語言編制的程序稱為源程序,它必須通過翻譯程序把它翻譯成目用高級語言編制的程序稱為源程序,它必須通過翻譯程序把它翻譯成目標程序(機器程序)后,才能被機器所識別、執行。源程序易學、使用標程序(機器程序)后,才能被機器所識別、執行。源程序易學、使用方便、易推廣。但翻譯后的目標程序長,執行時間長,實時性差。方便、易推廣。但翻譯后的目標程序長,執行時間長,實時性差。匯編語言:匯編語言:用機器專用符號指令碼。用機器專用符號指令碼。用匯編語言編制的程序稱為匯編語言程序,它也是源程序,必須通過匯用匯編語言編制的程序稱為匯編語言程序,它也是源程序,必須通過匯編程序將它翻譯成目標程序。它的目標程

56、序短,實時性好,大量用于實編程序將它翻譯成目標程序。它的目標程序短,實時性好,大量用于實時控制程序中。時控制程序中。 匯編語言的基本概念匯編語言的基本概念3.4.13.4.1 一個完整的匯編語言的語句由下列幾部分組成:一個完整的匯編語言的語句由下列幾部分組成:標識符標識符、保留字保留字、界符界符、常數常數和和注釋注釋,所有這些都稱為標記。,所有這些都稱為標記。 標識符標識符:是程序員為了使程序便于理解和書寫所使用的一:是程序員為了使程序便于理解和書寫所使用的一些字符串,常作為一段程序的開頭、一個數據塊的開頭。些字符串,常作為一段程序的開頭、一個數據塊的開頭。 保留字保留字:是匯編語言中預先保留

57、下來的具有特殊含義的符號,只能作為:是匯編語言中預先保留下來的具有特殊含義的符號,只能作為固定的用途。如:固定的用途。如:MOVMOV、INTINT、DBDB、SEGMENTSEGMENT、ENDEND等。凡是等。凡是80868086的指令、的指令、偽指令、寄存器名等都是保留字。偽指令、寄存器名等都是保留字。界符界符:作為一個程序中或者一條指令中兩個部分的分隔符號。如:作為一個程序中或者一條指令中兩個部分的分隔符號。如“,”、“;”等。等。常數常數:就是指令中出現的那些固定值。如立即尋址時所用的立即數、直:就是指令中出現的那些固定值。如立即尋址時所用的立即數、直接尋址時所用的地址等。接尋址時所

58、用的地址等。常數的表示形式:常數的表示形式:二進制,二進制,01001000B01001000B十進制,十進制,100100,200D200D十六進制,十六進制,1000H1000H、74H74H、0FE00H0FE00H八進制,八進制,2560Q2560Q用引號引起來的字符串。如用引號引起來的字符串。如ABCABC,等效于常數,等效于常數41H41H、42H42H、43H43H。注釋注釋:匯編語言中為了便于閱讀和理解而加入的一些說明文字。:匯編語言中為了便于閱讀和理解而加入的一些說明文字。注意注意:注釋要用注釋要用“;”打頭。打頭。在匯編過程中,注釋被略去不作處理。在匯編過程中,注釋被略去不

59、作處理。 表達式由表達式由操作數操作數和和運算符運算符組成。組成。 操作數操作數:內容上可能代表一個數據,也可能代表一個存儲:內容上可能代表一個數據,也可能代表一個存儲單元。單元。對于一個數據最簡單的表達方式就是用常數形式,如對于一個數據最簡單的表達方式就是用常數形式,如100H100H。匯編語言程序中也常常用標號來表示數據,如用匯編語言程序中也常常用標號來表示數據,如用PORTPORT表示表示一個端口號,而在匯編語言程序又用偽指令對一個端口號,而在匯編語言程序又用偽指令對PORTPORT作了定作了定義,使它等于某個常數。義,使它等于某個常數。源程序中,存儲器地址也常用標號表示,作為轉移指令的

60、源程序中,存儲器地址也常用標號表示,作為轉移指令的轉移地址或調用指令的調用地址。如轉移地址或調用指令的調用地址。如JMP STARTJMP START中的中的STARTSTART標號,實際上包括了地址的段值和偏移量。標號,實際上包括了地址的段值和偏移量。:包括包括EQ(相等)、(相等)、NE(不相等)、(不相等)、LT(小于)、(小于)、GT(大于)、(大于)、LE(小于或大于)、(小于或大于)、GE(大于或等于)共六種。(大于或等于)共六種。分析操作符(數值返回運算符)分析操作符(數值返回運算符)(1)取地址的偏移量)取地址的偏移量 分析操作符(數值返回運算符)分析操作符(數值返回運算符)分

溫馨提示

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

評論

0/150

提交評論