微機系統(tǒng)與接口:微機原理習題課_new1_第1頁
微機系統(tǒng)與接口:微機原理習題課_new1_第2頁
微機系統(tǒng)與接口:微機原理習題課_new1_第3頁
微機系統(tǒng)與接口:微機原理習題課_new1_第4頁
微機系統(tǒng)與接口:微機原理習題課_new1_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機系統(tǒng)與接口習題課 第1-3章要點小結一、數(shù)制與編碼補碼是計算機所采用的數(shù)值存儲格式,以后應用時我們約定帶符號數(shù)均默認為補碼。補碼使得加減法運算簡單了(帶符號數(shù)的加減法一致性加法時直接進行兩數(shù)相加,減法時用減數(shù)變補碼與被減數(shù)相加)??梢哉f補碼是使計算機工作“方便了”,使理解起來“麻煩了”。帶符號數(shù):原碼和反碼是人為定義,補碼是機器特性!例題習題一.2當下列各二進制分別代表原碼、反碼和補碼時,其等效的十進制數(shù)值為多少?11111111 代表原碼時, -127 ; 代表反碼時,原碼是10000000,0 ;代表補碼時,原碼是10000001,-1 (-128+127)例題習題一.3已知x1=+0

2、010100,y1=+0100001,x2=-0010100,y2=-0100001,試計算下列各式。(字長8位)解:由已知可得x2=-20,y2=-33,則得x2+y2/8=-20-4,x2+y2/8補=-24補=E8H反映在指令系統(tǒng)中MUL(無符號乘法指令)以及IMUL(帶符號乘法指令)比較指令:適用于無符號數(shù)的JA、JB等條件轉移指令與適用于帶符號數(shù)的JG、JL等條件轉移指令。例題設AL,BL都是帶符號數(shù),要求當ALBL時轉至NEXT處,在CMP AL,BL指令后應選用正確的條件轉移指令是()AJBE BJNG CJNA DJNLE 答案:B 有符號數(shù)的大小判斷二、對標志位的認識與理解容

3、易出錯的是(補碼的)算數(shù)運算后對CFOF的判斷;對CF的判別:只要在單步操作后看最高位是否有借位與進位即可, 不用考慮最高位是否被指定為符號位。CF=1表示無符號數(shù)運算溢出OF=1表示有符號數(shù)運算溢出對OF的判別:課本中對于OF的判別依據(jù)為:當算術運算結果超出了帶符號數(shù)的范圍時,即溢出?!罢绯觥薄柏撘绯觥?01011010B (+90)+01101011B (+107) 11000101B (-59)二進制補碼真值 10010010B (-110)+10100100B (-92) 00110110B (+54)二進制補碼真值正數(shù)相加的結果為負負數(shù)相加的結果為正簡單判別方法:雙高位判別法首先引

4、進兩個附加的判別符號,即 CS:表征最高位(符號位)的進位情況。如有進位,則CS=1;否則,CS=0。CP:表征次高位(數(shù)值部分最高位)的進位情況。如有進位,則CP=1;否則,CP=0。當CSCP=1 ,必定發(fā)生溢出。(異或)其中CSCP為“01”,稱其為“正溢出”;當CSCP為“10”,稱其為“負溢出”。 01010101B (+85)補+00111100B (+60)補 10010001B 91H真-17顯然CS=0,CP=1,則為“正溢出” 10101011B (-85)補+11000100B (-60)補 01101111B 6FH真111顯然CS=1,CP=0,則為“負溢出”提示:一

5、個正數(shù)與負數(shù)相加,結果肯定不溢出例題 習題1.4三、匯編指令匯編語言有三種基本語句:指令語句、偽指令語句、宏指令語句。指令語句操作指令+操作數(shù)(可隱含)匯編器如何找到操作數(shù)尋址方式:(1)在數(shù)據(jù)存儲器中,指令中如何提供操作數(shù)或操作數(shù)地址的方式。(2)在程序存儲器中,程序轉移時需提供轉移地址,這也稱為尋址。習題二. 1.(7) PUSH 1234H,源操作數(shù)尋址方式:直接尋址;無目標操作數(shù)例題下面指令中,源操作數(shù)的尋址方式為直接尋址的指令是()AADD AX,WORD PTR BX+SI BADD AX,DATA1CINC CX DMOV BX,8FFFH答案:B解釋:A為基址加變址;B中DAT

6、A1為一變量,作為存儲器操作數(shù);C為寄存器尋址;D為立即數(shù)尋址。 例題要點:理解各段與寄存器的概念,正確使用尋址方式。例:(1)直接、間接、立即三種尋址方式的執(zhí)行速度由快至慢依次為:(2)下列指令中操作數(shù)在代碼段中的是A.MOV AL,25HB.ADD AL,BHC.CMP AX,BP D.INC DS:BP立即、直接、間接A要點1:寄存器不能隨便使用基址與基址(或變址與變址)不能組合在一起尋址。MOV BX,BP+SI(正)MOV AX,BXBP(錯)2) 出現(xiàn)AX、CX、DX、SP (都錯) MOV IP, AX (錯) MOV AX, IP (錯) 存儲器間不能直接進行操作。(MOV 2

7、000H,BX;CMP BX,SI)段寄存器不能直接進行立即數(shù)賦值(MOV DS,0100H),段寄存器之間不能直接進行操作(MOV CS,DS),段寄存器不能進行加減法操作(ADD DS,AX),另外CS不能作為目標操作數(shù)。(PUSH CS(正),POP CS(錯)) 要點2:操作數(shù)類型要明確MOV AX,BLMOV AL,BX反匯編查看:警告:操作數(shù)類型不匹配警告就是非法!例題下面的指令中,不合法的是()AMUL BX BMUL BX CMOV AL,02H DMOV AL,BX 答案:B 解釋:因為MUL指令可以進行字節(jié)或字操作,而B中并未向編譯器指明操作數(shù)的類型,使得操作不能確定,這時

8、可以利用偽指令BYTE PTR或WORD PTR向編譯器傳遞操作數(shù)類型。例題指出下列傳送類指令中,哪些是非法指令(1)MOV DS,0100H (2)MOV BP,AL(3)MOV BX,AL(4)XCHG AH,AL(5)MOV AX, DATA1+1(6)OUT 310H,AL(7)MOV BP+DI,AX(8)MOV BX+CX,2130H(9)AND AX,BL(10)ADD AL,BX+DX+10H(11)MOV CS:2000H,AX (12)MOV AX, DATA2-DATA1非法指令:(1),(2),(3),(6),(8),(9),(10)例題 補充注意下列指令都是非法的(1

9、)CMPCF,1 ;symbol not defined(2)MOVAX,CF(3)MOVDATA1SI,DATA2DI(4) MOVDATA1, DATA2(5)SBBAX,BX(6) CMP39,AL(7) MOVAX, DATA1+DATA2另外:(1) MOV BX,OFFSET WORD1(正確,取WORD1的偏移地址賦給BX)(2)要點3:串操作指令注意“先期的準備工作”:對相應的尋址寄存器進行(DS:SI、ES:DI)設置,注意段超越的問題。根據(jù)自己的程序決定對存儲區(qū)的操作方向,即對DF的設置。若要進行重復操作時,一定要設置CX。若要進行ZF的判別,注意判別條件的設置。 例題假設

10、ES段中有一個字符12FG3LM5C,其名為ARRAY,下面的程序段 CLD LEA DI,ES:ARRAY MOV AL,G MOV CX,9REPNE SCASBHLT執(zhí)行后,CX的值是()。A7 B6 C5 D4答案:C解釋:這是在字符串中尋找第一個出現(xiàn)的指定字符的操作,我們將關鍵的循環(huán)串操作的具體的執(zhí)行步驟表述如下:先做終止判斷:如果CX=0或ZF=1則退出,否則往下執(zhí)行:(2)執(zhí)行其后的串操作,比較AL與(ES:DI),改變ZF(3)DF=0表示按地址增方向,修正DI(4)CX-1送入CX(5)回到REPNE SCASB要點4:控制轉移指令JMP指令分類情況:按段內(nèi)還是段間以及直接還

11、是間接??煞譃橐韵挛孱悾憾蝺?nèi)直接短轉移:JMP SHORT label8位相對位移量,與下一條指令的地址差 -128127。段內(nèi)直接近轉移:JMP NEAR PTR label 16位相對位移量。 范圍-32k32k。相當于間接修改寄器CS、IP的內(nèi)容段內(nèi)間接轉移:16位相對位移量 JMP reg或JMP memMOV BX, 1000HJMP BXJMP WORD PTR BX+20H段間直接轉移:32位相對位移量(CS:IP) JMP FAR PTR label,段間間接轉移:32位相對位移量(CS:IP),JMP memMOV SI, 0100HJMP DWORD PTR SI 不能是寄

12、存器25課程中的例題DP1 DD PRC1,PRC2CODE SEGMENT;設CS為8B00H PRC1 PROC FAR;8B00:1000:PRC1 ENDPPRC2 PROC FAR;8B00:2C20:PRC2 ENDP00,10,00,8B,20,2C,00,8B;DP1開始的內(nèi)容=?00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)8B00:1000HMYDATA ENDS;DP1的段基8A00H,DP1的偏移量0034H26課程中的例題JMP DWORD PTR DP1 ;=JMP FAR 0034HJMP FAR PTR DP1 ;=JMP

13、 DS:0034HJMP FAR PTR DP1+4 ;=JMP DS:0038H目標地址= 8B00H:1000H00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)8B00:1000H要點4:控制轉移指令所有條件轉移指令(JE/JZ/JC/JA/JB)、循環(huán)控制指令(LOOP)的操作數(shù)都是一個短標號,即位移量在-128127的范圍內(nèi)。 注意:在編制大的循環(huán)程序時要注意跳轉范圍的限制問題,否則會出現(xiàn)以下的編譯問題。因此要求在編制程序時要做到短小精悍,簡潔易讀提示:條件轉移指令往往與邏輯指令,移位指令,CMP等指令相配合。習題3.2若WORD1及WORD2均為

14、字變量,ADDITION為標號,請說明下列指令的錯誤之處:(1)JMP ADDITIONDI(2)JNZ WORD2(3)JMP FAR ADDITION(1)標號無類型(short/near)(2)Jcc 后面只跟代碼標號,限短跳轉(-128+127)(3)缺PTR例題已知指令JMP SHORT NEXT1在程序中的偏移地址為001EH(注,這是該指令第1字節(jié)所在的地址),指令的機器碼為0EB03H(其中0EBH為操作碼,03H為操作數(shù)),執(zhí)行該指令后程序跳轉到的指令偏移地址是什么? 答案:0023H JMP SHORT NEXT1MOV BX,2NEXT1:MOV AX,1跳轉偏移量指得是

15、JMP指令的下一條指令到轉移去的指令之間的偏移量如果該JMP指令的機器碼是0EBE7H可以得知跳轉偏移量為0E7H指令JMP SHORT NEXT1是占有2個字節(jié)的機器碼,那么下一條指令偏移地址為001EH + 0002H =0020H。JMP轉移去的偏移地址是JMP的下一條指令偏移地址加上跳轉偏移量:可以發(fā)現(xiàn)跳轉偏移量(0E7H)是一個負值,因此可以得知是跳到程序前端,(減法運算補碼化,實際相當于0020H-0019H=0007H) 解釋:指令JMP SHORT NEXT1操作碼(0EBH)偏移地址:001EH操作數(shù)(0E7H)+001FH0020H0007H過程調(diào)用指令在運用時強調(diào)實現(xiàn)模塊

16、化的編程。調(diào)用指令(CALL)與返回指令(RET)實現(xiàn)程序模塊良好的銜接。分類情況:仍然按段內(nèi)/段間以及直接/間接。例:已知當前一條近過程過程調(diào)用指令CALL near_proc所在的偏移地址為1000H,當前SP=2000H,那么執(zhí)行完該CALL指令后,堆棧段中(1FFEH)=?答案:03H指令:3個字節(jié)解釋:首先從已知可知該指令是一段內(nèi)直接調(diào)用過程,指令碼是占用3個字節(jié)的機器碼。執(zhí)行CALL指令后,系統(tǒng)會將斷點地址,即CALL指令的下一條指令的偏移地址(即1003H )壓入堆棧。壓入堆棧的過程:堆棧指針減2(SP=SP-2),本題原SP=2000H,更新后為SP=1FFEH,而壓入的內(nèi)容(

17、1003H)根據(jù)高地址占用高字節(jié),低地址占用低字節(jié)的原則,可知(1FFFH)=10H,(1FFEH)=03H。 解釋:執(zhí)行指令前執(zhí)行指令后03H10HIP=1003HSP=1FFEH四、匯編語言指令系統(tǒng)要點1:理解操作數(shù), 注意區(qū)分變量/表達式常量寄存器存儲器操作數(shù): 具有段屬性、偏移量屬性和類屬性。標號:在代碼段中。變量:存放數(shù)據(jù)的存儲單元的名字,在數(shù)據(jù)段或堆棧段中。表達式: (由運算符和被操作數(shù)組成)匯編時獲得。數(shù)值表達式:常量和運算符組成,匯編時產(chǎn)生立即數(shù)。地址表達式:由常量、變量、標號、寄存器、運算符組成,表示存儲器的段內(nèi)偏移地址。運算符算術(+,-)邏輯(AND,OR)關系(EQ,L

18、T)分析(OFFSET, SIZE)合成(PTR)要點2:注意區(qū)分邏輯運算符和邏輯指令。運算符出現(xiàn)在操作數(shù)部分,在匯編時完成運算;指令出現(xiàn)在操作碼部分,運行exe時由CPU執(zhí)行。例如:AND AL,12H AND 0FH;等價于AND AL,02H 數(shù)值表達式作為操作數(shù)標號名和變量名反匯編看不到MOV DATA1, AXJMP NEXT習題3.1設下列指令中的標識符均為字變量,請指出哪些8086/8088指令是非法的:(9)MOV SI,OFFSET WORD2BX指令二義性?MOV SI, 2BXMOV SI, BX+2OFFSET優(yōu)先級高于+該指令合法!要點3:注意區(qū)分字操作和字節(jié)操作(1

19、)訪問內(nèi)存時能夠自動調(diào)整訪問規(guī)模(非法,但編譯器警告)DATA1 DB 01H, 02HMOV AX, DATA1 ;字賦值,高地址-AH,低地址-ALMOV DATA1, AX ;字賦值。(2) 超范圍賦值是不安全的(非法,編譯器警告) (3)請使用合成運算符PTR安全地改變訪問規(guī)模warning A4031: Operand types must match偽指令(1)符號定義EQU:定義的是符號名,不能重新定義,常用于定義端口。EQU可以寫在程序的任何位置。 (2)數(shù)據(jù)定義DB,DW,DD:定義的是變量,定義字時要遵循低位低地址,高位高地址的原則。DB/DW/DD只能定義在DATA段中。

20、(3)段定義SEGMENT/ENDS ASSUME(4)過程定義PROG/ENDP(5)模塊定義PUBLIC EXTERN(6)宏處理MACRO/ENDM(7)其它偽指令要點4:區(qū)別符號名與變量PC55 EQU 282HDATA SEGMENTDATA1 DB ?DATA2 DW PC55+1DATA ENDSMOV DX,PC55;大于等于256時要用DX間址IN AL,DXLEA AX, PC55;錯LEA DATA1+2*2;對常用DOS/BIOS調(diào)用8086有四種中斷:NMI、INTR、異常中斷、軟中斷INT。DOS功能子程序調(diào)用(INT 20HINT 27H)其中INT 21H稱為D

21、OS系統(tǒng)功能調(diào)用。(1)鍵盤輸入并顯示(01H號功能調(diào)用)(2)直接控制臺輸入/輸出(06H號功能調(diào)用)(3)顯示或打印輸出單個字符(02H號和05H號功能調(diào)用)(4)字符串輸入(0AH號功能調(diào)用)(5)字符串輸出(09H號功能調(diào)用)(6)終止當前進程,返回調(diào)用進程(4CH號功能調(diào)用)BIOS系統(tǒng)調(diào)用(INT 10)五、匯編程序設計方法匯編程序的格式STACKSEGMENT PARA STACK STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK要點1:為什么要遵循固定格式(標準序)?ASSUME CS:CODE, DS:DATA, SS:STACKASSUME偽指令指出各邏輯段所應該裝填的地址,但并沒有將段

溫馨提示

  • 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

提交評論