(完整版)微機原理與接口技術知識點總結整理_第1頁
(完整版)微機原理與接口技術知識點總結整理_第2頁
(完整版)微機原理與接口技術知識點總結整理_第3頁
(完整版)微機原理與接口技術知識點總結整理_第4頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、微機原理與接口技術微機原理與接口技術復習參考資料第一章概 述一、計算機中的數制1、無符號數的表示方法:( 1)十進制計數的表示法特點:以十為底,逢十進一;共有 0-9 十個數字符號。( 2)二進制計數表示方法:特點:以 2 為底,逢 2 進位;只有 0 和 1 兩個符號。( 3 )十六進制數的表示法:特點:以 16 為底,逢 16 進位;有 0-9 及 A F(表示 1015 )共 16 個數字符號。2、各種數制之間的轉換( 1)非十進制數到十進制數的轉換按相應進位計數制的權表達式展開,再按十進制求和。(見書本1.2.3 , 1.2.4 )( 2)十進制數制轉換為二進制數制十進制 二進制的轉換

2、:整數部分:除 2取余;小數部分:乘 2取整。十進制 十六進制的轉換:整數部分:除 16取余;小數部分:乘 16取整。以小數點為起點求得整數和小數的各個位。( 3)二進制與十六進制數之間的轉換用 4 位二進制數表示 1 位十六進制數3 、無符號數二進制的運算(見教材P5 )4 、二進制數的邏輯運算特點:按位運算,無進借位( 1)與運算只有 A 、 B 變量皆為1 時,與運算的結果就是1( 2)或運算A、 B 變量中,只要有一個為1 ,或運算的結果就是1( 3)非運算( 4)異或運算A、 B 兩個變量只要不同,異或運算的結果就是1二、計算機中的碼制1、對于符號數,機器數常用的表示方法有原碼、反碼

3、和補碼三種。數X 的原碼記作 X 原,反碼記作 X 反,補碼記作 X 補。1/46微機原理與接口技術注意:對正數,三種表示法均相同。它們的差別在于對負數的表示。( 1)原碼定義:符號位: 0 表示正, 1 表示負;數值位:真值的絕對值。注意:數 0 的原碼不唯一( 2)反碼定義:若 X>0 ,則X 反 =X 原若 X<0,則X 反 = 對應原碼的符號位不變,數值部分按位求反注意:數 0 的反碼也不唯一( 3)補碼定義:若 X>0 , 則X補= X 反= X 原若 X<0 , 則X補= X 反+1注意:機器字長為8 時,數 0 的補碼唯一,同為000000002、 8 位

4、二進制的表示范圍:原碼: -127+127反碼: -127+127補碼: -128+1273、特殊數10000000該數在原碼中定義為:-0在反碼中定義為:-127在補碼中定義為:-128對無符號數:(10000000) = 128三、信息的編碼1、 十進制數的二進制數編碼用 4 位二進制數表示一位十進制數。有兩種表示法:壓縮 BCD 碼和非壓縮 BCD 碼。(1 )壓縮 BCD 碼的每一位用 4 位二進制表示, 00001001 表示 09 ,一個字節表示兩位十進制數。(2 )非壓縮 BCD 碼用一個字節表示一位十進制數,高 4 位總是 0000 ,低 4 位的 00001001表示 092

5、、 字符的編碼計算機采用7 位二進制代碼對字符進行編碼(1 )數字 09 的編碼是 01100000111001,它們的高 3 位均是 011 ,后 4 位正好與其對應的二進制代碼(BCD 碼)相符。2/46微機原理與接口技術(2 )英文字母 AZ 的 ASCII 碼從 1000001 (41H )開始順序遞增,字母 az 的 ASCII 碼從 1100001 ( 61H )開始順序遞增,這樣的排列對信息檢索十分有利。第二章微機組成原理第一節、微機的結構1、計算機的經典結構馮. 諾依曼結構( 1)計算機由運算器、控制器、輸入設備和輸出設備五大部分組成(運算器和控制器又稱為 CPU)( 2)數據

6、和程序以二進制代碼形式不加區分地存放在存儲器總,存放位置由地址指定,數制為二進制。( 3)控制器是根據存放在存儲器中的指令序列來操作的,并由一個程序計數器控制指令的執行。3、 系統總線的分類( 1)數據總線( Data Bus ),它決定了處理器的字長。( 2)地址總線( Address Bus ) , 它決定系統所能直接訪問的存儲器空間的容量。( 3)控制總線( Control Bus )第二節、 8086 微處理器1、 8086 是一種單片微處理芯片,其內部數據總線的寬度是16 位,外部數據總線寬度也是16 位,片內包含有控制計算機所有功能的各種電路。8086 地址總線的寬度為20 位,有

7、 1MB (2 20 )尋址空間。2、 8086CPU由總線接口部件BIU 和執行部件EU 組成。 BIU 和 EU 的操作是異步的,為8086 取指令和執行指令的并行操作體統硬件支持。3、 8086 處理器的啟動4、寄存器結構8086 微處理器包含有13 個 16 位的寄存器和9 位標志位。4 個通用寄存器(AX ,BX , CX , DX )4 個段寄存器( CS ,DS , SS , ES )4 個指針和變址寄存器(SP , BP ,SI , DI )指令指針( IP)1)、通用寄存器(1) 8086 含 4 個 16 位數據寄存器,它們又可分為8 個 8 位寄存器,即:AXAH ,AL

8、BXBH ,BLCXCH ,CLDXDH ,DL常用來存放參與運算的操作數或運算結果(2 )數據寄存器特有的習慣用法AX :累加器。多用于存放中間運算結果。所有 I/O 指令必須都通過 AX 與接口傳送信息; BX :基址寄存器。在間接尋址中用于存放基地址;CX :計數寄存器。用于在循環或串操作指令中存放循環次數或重復次數;3/46微機原理與接口技術DX :數據寄存器。在 32 位乘除法運算時,存放高 16 位數;在間接尋址的 I/O 指令中存放 I/O 端口地址。2)、指針和變址寄存器SP :堆棧指針寄存器,其內容為棧頂的偏移地址;BP :基址指針寄存器,常用于在訪問內存時存放內存單元的偏移

9、地址。SI :源變址寄存器DI :目標變址寄存器變址寄存器常用于指令的間接尋址或變址尋址。3)、段寄存器CS :代碼段寄存器,代碼段用于存放指令代碼DS :數據段寄存器ES :附加段寄存器,數據段和附加段用來存放操作數SS :堆棧段寄存器,堆棧段用于存放返回地址,保存寄存器內容,傳遞參數4)、指令指針(IP )16 位指令指針寄存器,其內容為下一條要執行的指令的偏移地址。5)、標志寄存器(1)狀態標志:進位標志位(CF ):運算結果的最高位有進位或有借位,則CF=1輔助進位標志位(AF ):運算結果的低四位有進位或借位,則AF=1溢出標志位(OF ):運算結果有溢出,則OF=1零標志位( ZF

10、 ):反映指令的執行是否產生一個為零的結果符號標志位(SF ):指出該指令的執行是否產生一個負的結果奇偶標志位(PF ):表示指令運算結果的低8 位“ 1個”數是否為偶數(2 )控制標志位中斷允許標志位(IF ):表示 CPU 是否能夠響應外部可屏蔽中斷請求跟蹤標志( TF ): CPU 單步執行5、 8086 的引腳及其功能(重點掌握以下引腳)AD 15 AD0 :雙向三態的地址總線,輸入/輸出信號INTR :可屏蔽中斷請求輸入信號,高電平有效。可通過設置IF 的值來控制。NMI :非屏蔽中斷輸入信號。不能用軟件進行屏蔽。RESET :復位輸入信號,高電平有效。復位的初始狀態見P21MN/M

11、X :最小最大模式輸入控制信號。第三章8086 指令系統第一節 8086 尋址方式一、數據尋址方式1、立即尋址操作數 ( 為一常數 ) 直接由指令給出(此操作數稱為立即數)4/46微機原理與接口技術立即尋址只能用于源操作數例:MOVAX, 1C8FHMOVBYTE PTR2A00H, 8FH錯誤例:× MOV 2A00H,AX ; 錯誤!指令操作例: MOV AX ,3102H; AX3102H執行后, (AH) = 31H , (AL) = 02H2、寄存器尋址( 1)操作數放在某個寄存器中( 2)源操作數與目的操作數字長要相同( 3)寄存器尋址與段地址無關例:MOVAX, BXM

12、OV3F00H, AXMOVCL, AL錯誤例:× MOV AX,BL;字長不同× MOV ES:AX,DX;寄存器與段無關3、直接尋址(1)指令中直接給出操作數的16 位偏移地址偏移地址也稱為有效地址(EA, EffectiveAddress)( 2)默認的段寄存器為 DS,但也可以顯式地指定其他段寄存器稱為段超越前綴( 3)偏移地址也可用符號地址來表示,如ADDR、 VAR例:MOVAX ,2A00HMOVDX ,ES:2A00HMOVSI,TABLE_PTR4、間接尋址操作數的偏移地址(有效地址EA)放在寄存器中只有 SI、DI 、 BX 和 BP 可作間址寄存器例:

13、MOVAX,BXMOVCL,CS:DI錯誤例:×MOVAX, DX× MOVCL, AX5、寄存器相對尋址EA= 間址寄存器的內容加上一個8/16 位的位移量例:MOVAX,BX+8MOVCX,TABLESI5/46微機原理與接口技術MOVAX,BP;默認段寄存器為SS指令操作例:MOVAX ,DATABX若 (DS)=6000H, (BX)=1000H, DA TA=2A00H,(63A00H)=66H,(63A01H)=55H則物理地址= 60000H + 1000H + 2A00H = 63A00H指令執行后:( AX ) =5566H6、基址變址尋址若操作數的偏移地

14、址:由基址寄存器(BX 或 BP) 給出基址尋址方式由變址寄存器(SI 或 DI) 給出變址尋址方式由一個基址寄存器的內容和一個變址寄存器的內容相加而形成操作數的偏移地址,稱為基址 -變址尋址。EA= ( BX )+( SI)或( DI );EA= ( BP) +( SI)或( DI )同一組內的寄存器不能同時出現。注意:除了有段跨越前綴的情況外,當基址寄存器為BX 時,操作數應該存放在數據段DS中,當基址寄存器為BP 時,操作數應放在堆棧段SS 中。例:MOVAX,BX SIMOVAX,BX+SIMOVAX,DS: BP DI錯誤例:×MOVAX,BX BP× MOVAX

15、,DI SI指令操作例: MOVAX , BXSI假定: (DS)=8000H,(BX)=2000H,SI=1000H則物理地址= 80000H + 2000H + 1000H = 83000H指令執行后 : (AL)=83000H(AH)=83001H7、相對基址變址尋址在基址 -變址尋址的基礎上再加上一個相對位移量EA= ( BX )+( SI)或( DI )+8 位或 16 位位移量;EA= ( BP) +( SI)或( DI ) +8 位或 16 位位移量指令操作例 : MOV AX , DATADIBX若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA

16、=200H則指令執行后 (AH)=83021H,(AL)=83020H寄存器間接、寄存器相對、基址變址、相對基址變址四種尋址方式的比較:尋址方式指令操作數形式寄存器間接只有一個寄存器(BX/BP/SI/DI之一)寄存器相對一個寄存器加上位移量基址 變址兩個不同類別的寄存器6/46微機原理與接口技術相對基址 -變址兩個不同類別的寄存器加上位移量二、地址尋址方式(了解有4 類,能判斷)簡要判斷依據(指令中間的單詞):段內直接short,near段內間接word段間直接far段間間接dword第二節8086 指令系統一、數據傳送指令1、通用傳送指令(1) MOV dest , src; dest s

17、rc傳送的是字節還是字取決于指令中涉及的寄存器是8 位還是 16 位。具體來說可實現:MOVmem/reg1, mem/reg2指令中兩操作數中至少有一個為寄存器 MOVreg,data;立即數送寄存器 MOVmem,data; 立即數送存儲單元 MOVacc, mem;存儲單元送累加器 MOVmem,acc;累加器送存儲單元 MOV segreg,mem/reg ; 存儲單元 /寄存器送段寄存器 MOV mem/reg, segreg ;段寄存器送存儲單元 /寄存器MOV 指令的使用規則IP 不能作目的寄存器不允許mem mem不允許segreg segreg立即數不允許作為目的操作數不允許

18、segreg立即數源操作數與目的操作數類型要一致當源操作數為單字節的立即數,而目的操作數為間址、變址、基址+變址的內存數時,必須用 PTR 說明數據類型。如:MOV BX ,12H 是錯誤的。(2)、堆棧指令什么是堆棧?按 “后進先出 (LIFO) ”方式工作的存儲區域。堆棧以字為單位進行壓入彈出操作。規定由 SS 指示堆棧段的段基址,堆棧指針SP 始終指向堆棧的頂部,SP 的初值規定了所用堆棧區的大小。堆棧的最高地址叫棧底。壓棧指令 PUSHPUSHsrc; src 為 16 位操作數7/46微機原理與接口技術例: PUSHAX;將 AX 內容壓棧執行操作:( SP) -1高字節AH(SP)

19、 -2低字節AL(SP)( SP) - 2注意進棧方向是高地址向低地址發展。彈出指令 POPPOPdest例: POPBX;將棧頂內容彈至BX執行操作:( BL )( SP)( BH )( SP)+1( SP)( SP) +2堆棧指令在使用時需注意的幾點:堆棧操作總是按字進行不能從棧頂彈出一個字給CS堆棧指針為SS:SP, SP 永遠指向棧頂SP 自動進行增減量(-2, +2 )(3)、交換指令XCHG格式: XCHGreg, mem/reg功能:交換兩操作數的內容。要求:兩操作數中必須有一個在寄存器中;操作數不能為段寄存器和立即數;源和目地操作數類型要一致。舉例:XCHGAX , BXXCH

20、G2000 ,CL( 4)查表指令 XLAT執行的操作: AL (BX)+(AL)又叫查表轉換指令, 它可根據表項序號查出表中對應代碼的內容。 執行時先將表的首地址(偏移地址)送到 BX 中,表項序號存于 AL 中。2、輸入輸出指令只限于用累加器AL 或 AX 來傳送信息。功能 : (累加器 ) I/O 端口( 1) 輸入指令 IN 格式 :IN acc,PORT ;PORT 端口號 0 255HIN acc,DX;DX 表示的端口范圍達64K例 :IN AL , 80H ;(AL) (80H 端口 )IN AL ,DX;(AL) (DX)8/46微機原理與接口技術(2) 輸出指令 OUT格式

21、: OUTport,accOUTDX,acc例: OUT 68H , AX;(69H , 68H)( AX )OUT DX , AL;(DX) (AL)在使用間接尋址的 IN/OUT 指令時,要事先用傳送指令把 I/O 端口號設置到 DX 寄存器如:MOVDX , 220HINAL , DX; 將 220H 端口內容讀入AL3、目標地址傳送指令(1)LEA傳送偏移地址格式: LEA reg , mem; 將指定內存單元的偏移地址送到指定寄存器要求:1) 源操作數 必須是一個 存儲器操作數;2) 目的操作數必須是一個 16 位的通用寄存器。例: LEABX , SI+10H設:( SI) =10

22、00H則執行該指令后, (BX ) =1010H注意以下二條指令差別:LEA BX , BUFFERMOV BX , BUFFER前者表示將符號地址為BUFFER 的存儲單元的偏移地址取到BX 中 ;后者表示將BUFFER 存儲單元中的內容取到BX 中。下面兩條指令等效:LEA BX , BUFFERMOV BX, OFFSET BUFFER其中 OFFSET BUFFER表示存儲器單元BUFFER 的偏移地址。二者都可用于取存儲器單元的偏移地址,但LEA 指令可以取動態的地址,OFFSET 只能取靜態的地址。二、算術運算指令1、 加法指令(1) 不帶進位的加法指令 ADD格式:ADDacc,

23、dataADDmem/reg,dataADDmem/reg1,mem/reg2實例:9/46微機原理與接口技術ADDAL , 30HADDSI, BX+20HADDCX ,SIADDDI , 200H?ADD 指令對 6 個狀態標志均產生影響。例:已知 (BX)=D75FH指令ADDBX,8046H執行后,狀態標志各是多少?D75FH = 1110 0111 0101 11118046H = 1000 0000 0100 01101111110110 0111 1010 0101結果: C=1, Z=0, P=0, A=1, O=1, S=0判斷溢出與進位從硬件的角度: 默認參與運算的操作數都

24、是有符號數, 當兩數的符號位相同, 而和的結果相異時有溢出,則 OF=1,否則 OF=0(2)帶進位的加法 ADCADC 指令在形式上和功能上與ADD 類似,只是相加時還要包括進位標志CF 的內容,例如:ADCAL , 68H ; AL (AL)+68H+(CF)ADCAX,CX;AX (AX)+(CX)+(CF)ADCBX , DI;BX (BX)+DI+1DI+(CF)( 3)加 1 指令 INC格式: INCreg/mem功能:類似于C 語言中的 +操作:對指定的操作數加 1例: INCALINCSIINCBYTE PTRBX+4注:本指令不影響CF 標志。(4)非壓縮BCD 碼加法調整

25、指令AAAAAA 指令的操作:如果 AL 的低 4 位 9 或 AF=1 ,則: AL (AL)+6,(AH) (AH)+1,AF 1 AL 高 4位清零 CF AF否則 AL 高4位清零(5)壓縮 BCD 碼加法調整指令DAA兩個壓縮BCD 碼相加結果在AL 中,通過DAA 調整得到一個正確的壓縮BCD 碼.指令操作 (調整方法 ):若 AL 的低 4位9或 AF=110/46微機原理與接口技術則 (AL) (AL)+6 , AF 1若 AL 的高 4位9或 CF=1則 (AL) (AL)+60H , CF 1除 OF 外, DAA 指令影響所有其它標志。DAA 指令應緊跟在 ADD 或 A

26、DC 指令之后。2、 減法指令(1)不考慮借位的減法指令SUB格式: SUB dest, src操作: dest (dest)-(src)注: 1. 源和目的操作數不能同時為存儲器操作數2. 立即數不能作為目的操作數指令例子:SUB AL, 60HSUB BX+20H , DXSUB AX, CX( 2)考慮借位的減法指令 SBB SBB指令主要用于多字節的減法。格式: SBB dest, src操作: dest (dest)-(src)-(CF)指令例子:SBB AX, CXSBB WORD PTRSI, 2080HSBB SI,DX( 3)減 1 指令 DEC作用類似于 C 語言中的”操作

27、符。格式: DEC opr操作: opr (opr)-1指令例子:DEC CLDEC BYTE PTRDI+2DEC SI(4)求補指令NEG格式:NEGopr操作:opr 0-(opr)對一個操作數取補碼相當于用0 減去此操作數,故利用NEG 指令可得到負數的絕對值。例:若 (AL)=0FCH ,則執行NEG AL 后,(AL)=04H , CF=1(5)比較指令CMP格式:CMPdest, src操作:(dest)-(src)11/ 46微機原理與接口技術CMP 也是執行兩個操作數相減,但結果不送目標操作數,其結果只反映在標志位上。指令例子:CMPAL , 0AHCMPCX ,SICMPD

28、I , BX+03( 6)非壓縮 BCD 碼減法調整指令 AAS對 AL 中由兩個非壓縮的 BCD碼相減的結果進行調整。調整操作為:若 AL 的低 4 位 9 或 AF=1,則: AL (AL)-6,AH (AH)-1,AF 1 AL 的高 4 位清零 CF AF否則: AL 的高 4 位清零( 7)壓縮 BCD碼減法調整指令 DAS對 AL 中由兩個壓縮 BCD碼相減的結果進行調整。調整操作為:若 AL 的低 4 位 9 或 AF=1,則:AL (AL)-6,且 AF 1若 AL 的高 4 位 9 或 CF=1,則:AL (AL)-60H ,且 CF 1DAS對 OF無定義 , 但影響其余標

29、志位。DAS指令要求跟在減法指令之后。3、 乘法指令進行乘法時: 8 位 *8 位 16 位乘積16 位 *16 位 32 位乘積(1) 無符號數的乘法指令 MUL(MEM/REG)格式: MULsrc操作:字節操作數(AX) (AL)× (src)字操作數(DX, AX) (AX) ×(src)指令例子:MUL BL; (AL) × ( BL), 乘積在 AX中MUL CX; (AX) × ( CX), 乘積在 DX,AX中MUL BYTE PTRBX(2)有符號數乘法指令IMUL格式與 MUL 指令類似,只是要求兩操作數均為有符號數 。指令例子:IM

30、ULBL; (AX) (AL) ×(BL)IMULWORD PTRSI ;(DX,AX) (AX) ×(SI+1SI)12/46微機原理與接口技術注意: MUL/IMUL指令中 AL(AX) 為隱含的乘數寄存器; AX(DX,AX) 為隱含的乘積寄存器; SRC 不能為立即數; 除 CF 和 OF外,對其它標志位無定義。4、除法指令進行除法時: 16 位 /8 位 8 位商32 位 /16 位 16 位商對被除數、商及余數存放有如下規定:被除數商余數字節除法AXALAH字除法DX:AXAXDX(1)無符號數除法指令DIV格式: DIVsrc操作:字節操作(AL) (AX)

31、/ (SRC)的商(AH)(AX) / (SRC)的余數字操作(AX) (DX, AX) / (SRC)的商(DX) (DX, AX) / (SRC)的余數指令例子:DIV CLDIV WORD PTRBX(2)有符號數除法指令IDIV格式:IDIVsrc操作與 DIV 類似。商及余數均為有符號數,且余數符號總是與被除數符號相同。注意 : 對于 DIV/IDIV指令AX(DX,AX)為隱含的被除數寄存器。AL(AX) 為隱含的商寄存器。AH(DX) 為隱含的余數寄存器。src 不能為立即數。對所有條件標志位均無定關于除法操作中的字長擴展問題?除法運算要求被除數字長是除數字長的兩倍,若不滿足則需

32、 對被除數進行擴展,否則產生錯誤。?對于無符號數除法擴展,只需將AH 或 DX 清零即可。?對有符號數而言,則是符號位的擴展。可使用前面介紹過的符號擴展指令CBW 和 CWD三、邏輯運算和移位指令1、邏輯運算指令(1)邏輯與AND13/46微機原理與接口技術對兩個操作數進行按位邏輯“與”操作。格式: ANDdest, src用途:保留操作數的某幾位,清零其他位。例 1:保留 AL 中低 4 位,高 4 位清 0。 AND AL,0FH(2)邏輯或OR對兩個操作數進行按位邏輯”或 ”操作。格式: ORdest, src用途:對操作數的某幾位置1;對兩操作數進行組合。例 1:把 AL 中的非壓縮B

33、CD 碼變成相應十進制數的ASCII 碼。ORAL, 30H( 3)邏輯非 NOT對操作數進行按位邏輯”非 ”操作。格式: NOTmem/reg例: NOTCXNOTBYTE PTRDI(4)邏輯異或XOR對兩個操作數按位進行”異或”操作。格式: XOR dest, src用途:對reg 清零 ( 自身異或 )把 reg/mem 的某幾位變反 ( 與 1異或 )例 1:把 AX寄存器清零。 MOV AX,0 XOR AX,AX AND AX,0 SUB AX,AX( 5)測試指令 TEST操作與 AND 指令類似 ,但不將 ”與 ”的結果送回 ,只影響標志位。TEST 指令常用于位測試,與條件

34、轉移指令一起用。例:測試 AL 的內容是否為負數。TESTAL,80H;檢查 AL 中 D7=1?JNZMINUS;是 1(負數 ),轉 MINUS;否則為正數2、移位指令(1) 非循環移位指令算術左移指令SAL(Shift Arithmetic Left)14/46微機原理與接口技術算術右移指令SAR(Shift Arithmetic Right)邏輯左移指令SHL(Shift Left)邏輯右移指令SHR(Shift Right)這 4 條指令的格式相同 ,以 SAL 為例:CL ;移位位數大于1 時SALmem/reg1 ;移位位數等于 1 時? 算術移位 把操作數看做有符號數;邏輯移位

35、 把操作數看做無符號數。? 移位位數放在CL 寄存器中,如果只移1 位 ,也可以直接寫在指令中。例如:MOVCL,4SHRAL,CL;AL 中的內容右移4 位? 影響 C,P,S,Z,O 標志。? 結果未溢出時:左移 1 位操作數 *2右移 1 位操作數 /2例:把 AL 中的數 x 乘 10因為 10=8+2=2 3+2 1,所以可用移位實現乘10 操作。程序如下:MOVCL,3SALAL,1; 2xMOVAH,ALSALAL,1; 4xSALAL,1; 8xADDAL,AH; 8x+2x = 10 x四、控制轉移指令1、 轉移指令( 1)無條件轉移指令 JMP格式: JMP label本指

36、令無條件轉移到指定的目標地址,以執行從該地址開始的程序段 。( 2)條件轉移指令(補充內容) 根據單個標志位設置的條件轉移指令JB/JC;低于 ,或 CF=1, 則轉移JNB/JNC/JAE;高于或等于,或 CF=0, 則轉移JP/JPE;奇偶標志PF=1( 偶), 則轉移JNP/JPO;奇偶標志PF=0( 奇 ),則轉移JZ/JE;結果為零 (ZF=1), 則轉移JNZ/JNE;結果不為零 (ZF=0), 則轉移JS; SF=1,則轉移JNS;SF=0, 則轉移15/46微機原理與接口技術JO; OF=1,則轉移JNO; OF=0,則轉移根據組合條件設置的條件轉移指令這類指令主要用來判斷兩個

37、數的大小。判斷無符號數的大小JA高于則轉移條件為 : CF=0 ZF=0 ,即 A BJNA/JBE低于或等于則轉移條件為 : CF=1 ZF=1 ,即 A BJBA<B 則轉移JNBAB 則轉移判斷有符號數的大小JG ;大于則轉移 (A B)條件為 : (SF OF=0) ZF=0JGE;大于或等于則轉移(A B)條件為 : (SF OF=0) ZF=1JLE;小于或等于則轉移(A B)條件為 : (SF OF=1) ZF=1JL;小于則轉移(A B條件為 : (SF OF=1) ZF=02、循環控制指令用在循環程序中以確定是否要繼續循環。循環次數通常置于CX 中。轉移的目標應在距離本

38、指令-128 +127 的范圍之內。循環控制指令不影響標志位。(1)LOOP格式: LOOPlabel操作: (CX)-1 CX ;若 (CX) 0,則轉至 label 處執行 ;否則退出循環 ,執行 LOOP 后面的指令。LOOP 指令與下面的指令段等價:DECCXJNZlabel3、過程調用指令( 1)調用指令 CALL一般格式: CALLsub;sub 為子程序的入口4、中斷指令(1)INT n 執行類型 n 的中斷服務程序,N=0 25516/46微機原理與接口技術五、處理器控制指令1、標志位操作(1) CF 設置指令CLC0 CFSTC1 CFCMCCF 變反(2) DF 設置指令C

39、LD0 DF ( 串操作的指針移動方向從低到高)STD1 DF ( 串操作的指針移動方向從高到低)(3) IF 設置指令CLI0 IF ( 禁止 INTR 中斷 )STI1 IF (開放 INTR 中斷 )2、 HLT ( halt)執行 HLT 指令后, CPU 進入暫停狀態。第四章8086 匯編語言程序設計第一節偽指令CPU 指令與偽指令之間的區別:(1) CPU 指令是給 CPU 的命令,在運行時由 CPU 執行,每條指令對應 CPU 的一種特定的操作。而偽指令是給匯編程序的命令,在匯編過程中由匯編程序進行處理。(2) 匯編以后, 每條 CPU 指令產生一一對應的目標代碼;而偽指令則不產

40、生與之相應的目標代碼。1、數據定義偽指令(1)數據定義偽指令的一般格式為: 變量名 偽指令操作數 ,操作數 DB用來定義字節(BYTE )DW用來定義字(WORD )DD 用來定義雙字( DWORD )( 2)操作數的類型可以是:常數或常數表達式例如: DATA_BYTEDB 10,5,10HDATA_WORDDW 100H,100,-4DATA_DWDD 2*30,0FFFBH可以為字符串(定義字符串最好使用DB )例如: char1 DB AB可以為變量可以為?號操作符例如: XDB5,?, 6?號只是為了給變量保留相應的存儲單元,而不賦予變量某個確定的初值。重復次數: N DUP (初值

41、 ,初值 )例如: ZERO DB 2 DUP( 3, 5)XYZDB 2DUP (0, 2 DUP (1,3),5)在偽操作的操作數字段中若使用$,則表示的是地址計數器的當前值。17/46微機原理與接口技術2、補充內容:(1)類型PTR地址表達式例如: MOV BYTE PTR BX, 12HINC BYTE PTR BX注意:單操作數指令,當操作數為基址、變址、基+變的時候必須定義3、符號定義偽指令(1) EQU格式:名字EQU表達式EQU 偽指令將表達式的值賦予一個名字,以后可用這個名字來代替上述表達式。例: CONSTANTEQU100NEW_PORTEQUPORT_VAL+1(2)

42、=(等號)與 EQU 類似 ,但允許重新定義例:EMP=7;值為 7EMP=EMP+1 ;值為 8(3) LABELLABEL 偽指令的用途是定義標號或變量的類型格式:名字LABEL類型變量的類型可以是BYTE , WORD , DWORD 。標號的類型可以是NEAR 或 FAR4、段定義偽指令與段有關的偽指令有:SEGMENT 、 ENDS 、ASSUME 、 ORG(1)段定義偽指令的格式如下:段名 SEGMENT 定位類型 組合類型 類別 段名 ENDSSEGMENT 和 ENDS這兩個偽指令總是成對出現,二者前面的段名一致。二者之間的刪節部分,對數據段、附加段及堆棧段,一般是符號、變量

43、定義等偽指令。對于代碼段則是指令及偽指令。此外,還必須明確段和段寄存器的關系,這可由ASSUME 語句來實現。( 2 ) ASSUME格式:ASSUME 段寄存器名:段名 ,段寄存器名:段名 , ASSUME 偽指令告訴匯編程序,將某一個段寄存器設置為某一個邏輯段址,即明確指出源程序中邏輯段與物理段之間的關系。18/46微機原理與接口技術( 3) ORG偽指令 ORG 規定了段內的起始地址或偏移地址,其格式為:ORG<表達式 >表達式的值即為段內的起始地址或偏移地址,從此地址起連續存放程序或數據。5、匯編程序的一般結構(記住)DATASEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABGN:MOV AX ,DATAMOVDS,AX.MOV AH,4CHINT21HCODE ENDSEND BGN第三節程序設計1、 順序程序的設計(略)2、 分支程序的設計典型例題:1X>0Y=0X=0-1X<0程序為:MOVAL ,XCMPA

溫馨提示

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

最新文檔

評論

0/150

提交評論