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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、000H,BX;CMP BX,SI)段寄存器不能直接進(jìn)行立即數(shù)賦值(MOV DS,0100H),段寄存器之間不能直接進(jìn)行操作(MOV CS,DS),段寄存器不能進(jìn)行加減法操作(ADD DS,AX),另外CS不能作為目標(biāo)操作數(shù)。(PUSH CS(正),POP CS(錯(cuò))) 要點(diǎn)2:操作數(shù)類型要明確MOV AX,BLMOV AL,BX反匯編查看:警告:操作數(shù)類型不匹配警告就是非法!例題下面的指令中,不合法的是()AMUL BX BMUL BX CMOV AL,02H DMOV AL,BX 答案:B 解釋:因?yàn)镸UL指令可以進(jìn)行字節(jié)或字操作,而B中并未向編譯器指明操作數(shù)的類型,使得操作不能確定,這時(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)例題 補(bǔ)充注意下列指令都是非法的(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)要點(diǎn)3:串操作指令注意“先期的準(zhǔn)備工作”:對(duì)相應(yīng)的尋址寄存器進(jìn)行(DS:SI、ES:DI)設(shè)置,注意段超越的問題。根據(jù)自己的程序決定對(duì)存儲(chǔ)區(qū)的操作方向,即對(duì)DF的設(shè)置。若要進(jìn)行重復(fù)操作時(shí),一定要設(shè)置CX。若要進(jìn)行ZF的判別,注意判別條件的設(shè)置。 例題假設(shè)

10、ES段中有一個(gè)字符12FG3LM5C,其名為ARRAY,下面的程序段 CLD LEA DI,ES:ARRAY MOV AL,G MOV CX,9REPNE SCASBHLT執(zhí)行后,CX的值是()。A7 B6 C5 D4答案:C解釋:這是在字符串中尋找第一個(gè)出現(xiàn)的指定字符的操作,我們將關(guā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要點(diǎn)4:控制轉(zhuǎn)移指令JMP指令分類情況:按段內(nèi)還是段間以及直接還

11、是間接。可分為以下五類:段內(nèi)直接短轉(zhuǎn)移:JMP SHORT label8位相對(duì)位移量,與下一條指令的地址差 -128127。段內(nèi)直接近轉(zhuǎn)移:JMP NEAR PTR label 16位相對(duì)位移量。 范圍-32k32k。相當(dāng)于間接修改寄器CS、IP的內(nèi)容段內(nèi)間接轉(zhuǎn)移:16位相對(duì)位移量 JMP reg或JMP memMOV BX, 1000HJMP BXJMP WORD PTR BX+20H段間直接轉(zhuǎn)移:32位相對(duì)位移量(CS:IP) JMP FAR PTR label,段間間接轉(zhuǎn)移:32位相對(duì)位移量(CS:IP),JMP memMOV SI, 0100HJMP DWORD PTR SI 不能是寄

12、存器25課程中的例題DP1 DD PRC1,PRC2CODE SEGMENT;設(shè)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目標(biāo)地址= 8B00H:1000H00H10H00H8BH20H2CH00H8BHDP18A00:0034H(PRC1)8B00:1000H要點(diǎn)4:控制轉(zhuǎn)移指令所有條件轉(zhuǎn)移指令(JE/JZ/JC/JA/JB)、循環(huán)控制指令(LOOP)的操作數(shù)都是一個(gè)短標(biāo)號(hào),即位移量在-128127的范圍內(nèi)。 注意:在編制大的循環(huán)程序時(shí)要注意跳轉(zhuǎn)范圍的限制問題,否則會(huì)出現(xiàn)以下的編譯問題。因此要求在編制程序時(shí)要做到短小精悍,簡(jiǎn)潔易讀提示:條件轉(zhuǎn)移指令往往與邏輯指令,移位指令,CMP等指令相配合。習(xí)題3.2若WORD1及WORD2均為

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

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

16、化的編程。調(diào)用指令(CALL)與返回指令(RET)實(shí)現(xiàn)程序模塊良好的銜接。分類情況:仍然按段內(nèi)/段間以及直接/間接。例:已知當(dāng)前一條近過程過程調(diào)用指令CALL near_proc所在的偏移地址為1000H,當(dāng)前SP=2000H,那么執(zhí)行完該CALL指令后,堆棧段中(1FFEH)=?答案:03H指令:3個(gè)字節(jié)解釋:首先從已知可知該指令是一段內(nèi)直接調(diào)用過程,指令碼是占用3個(gè)字節(jié)的機(jī)器碼。執(zhí)行CALL指令后,系統(tǒng)會(huì)將斷點(diǎn)地址,即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)要點(diǎn)1:理解操作數(shù), 注意區(qū)分變量/表達(dá)式常量寄存器存儲(chǔ)器操作數(shù): 具有段屬性、偏移量屬性和類屬性。標(biāo)號(hào):在代碼段中。變量:存放數(shù)據(jù)的存儲(chǔ)單元的名字,在數(shù)據(jù)段或堆棧段中。表達(dá)式: (由運(yùn)算符和被操作數(shù)組成)匯編時(shí)獲得。數(shù)值表達(dá)式:常量和運(yùn)算符組成,匯編時(shí)產(chǎn)生立即數(shù)。地址表達(dá)式:由常量、變量、標(biāo)號(hào)、寄存器、運(yùn)算符組成,表示存儲(chǔ)器的段內(nèi)偏移地址。運(yùn)算符算術(shù)(+,-)邏輯(AND,OR)關(guān)系(EQ,L

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

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

20、(3)段定義SEGMENT/ENDS ASSUME(4)過程定義PROG/ENDP(5)模塊定義PUBLIC EXTERN(6)宏處理MACRO/ENDM(7)其它偽指令要點(diǎn)4:區(qū)別符號(hào)名與變量PC55 EQU 282HDATA SEGMENTDATA1 DB ?DATA2 DW PC55+1DATA ENDSMOV DX,PC55;大于等于256時(shí)要用DX間址IN AL,DXLEA AX, PC55;錯(cuò)LEA DATA1+2*2;對(duì)常用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號(hào)功能調(diào)用)(2)直接控制臺(tái)輸入/輸出(06H號(hào)功能調(diào)用)(3)顯示或打印輸出單個(gè)字符(02H號(hào)和05H號(hào)功能調(diào)用)(4)字符串輸入(0AH號(hào)功能調(diào)用)(5)字符串輸出(09H號(hào)功能調(diào)用)(6)終止當(dāng)前進(jìn)程,返回調(diào)用進(jìn)程(4CH號(hào)功能調(diào)用)BIOS系統(tǒng)調(diào)用(INT 10)五、匯編程序設(shè)計(jì)方法匯編程序的格式STACKSEGMENT PARA STACK STACK DB 1024 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK要點(diǎn)1:為什么要遵循固定格式(標(biāo)準(zhǔn)序)?ASSUME CS:CODE, DS:DATA, SS:STACKASSUME偽指令指出各邏輯段所應(yīng)該裝填的地址,但并沒有將段

溫馨提示

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

評(píng)論

0/150

提交評(píng)論