微機(jī)原理及接口技術(shù) 習(xí)題答案_第1頁(yè)
微機(jī)原理及接口技術(shù) 習(xí)題答案_第2頁(yè)
微機(jī)原理及接口技術(shù) 習(xí)題答案_第3頁(yè)
微機(jī)原理及接口技術(shù) 習(xí)題答案_第4頁(yè)
微機(jī)原理及接口技術(shù) 習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章習(xí)題及答案1. 微處理器內(nèi)部包含哪三大部分?解: 運(yùn)算器、控制器和寄存器組。2. 完成下列數(shù)制的轉(zhuǎn)換10101101B=()D=() H解: 10101101B=173D=ADH。0.11B=() D解: 0.11B=0.75D。211.25=()B =()H解: 211.25=11010011.01B=D3.4H。10111.0101B=()H=()BCD解: 10111.0101B=17.5H=23.3125D=( 0010 0011.0011 0001 0010 0101 )BCD3. 已知 X=+1011010B,Y= 0011011B,設(shè)機(jī)器數(shù)為 8 位,分別寫出 X、Y 的原

2、碼、反碼和補(bǔ)碼。解:XXX原反補(bǔ)01011010BY01011010BY01011010BY原反補(bǔ)10011011B11100100B11100101B4. 已知 X 的真值為 32, Y 的真值為 19,求XY 補(bǔ)?解:XY 補(bǔ)00001101B5. 已知 X=51,Y=86,用補(bǔ)碼完成下列運(yùn)算, 并判斷是否產(chǎn)生溢出 (設(shè)字長(zhǎng)為 8 位)。 XY XY XY XY解:10100011B ,因?yàn)?C 6C 70 ,所以未產(chǎn)生溢出。X補(bǔ) =00110011BY補(bǔ) =Y反+1=11010110反+1=10101001+1=10101010BX+Y補(bǔ)=X補(bǔ) +Y補(bǔ) =00110011B+101010

3、10B=11011101BX+Y=X+Y補(bǔ) 補(bǔ) =11011101 補(bǔ)=10100010+1=10100011B. 11110111B ,因?yàn)?C6C 71,所以產(chǎn)生溢出。 01110111B,因?yàn)?C6C71 ,所以產(chǎn)生溢出。 00100011B ,因?yàn)?C6C70 ,所以未產(chǎn)生溢出。6. 若使與門的輸出端輸出高電平,則各輸入端的狀態(tài)是什么?解: 各輸入端為高電平。7. 若使與非門的輸出端輸出低電平,則各輸入端的狀態(tài)是什么?解: 各輸入端為高電平。8. 如果 74LS138譯碼器的 Y4 端輸出低電平,則 C、 B、 A 三個(gè)輸入端的狀態(tài)分別是什么?解: C、 B、A 三個(gè)輸入端的狀態(tài)分別是

4、1, 0, 0。.第二章習(xí)題及答案1. 8086/8088CPU 由哪兩大功能部分所組成?簡(jiǎn)述它們的主要功能?解: 8086/8088CPU 由 EU 和 BIU 兩大功能部分組成。執(zhí)行單元EU主要完成指令的譯碼和執(zhí)行。執(zhí)行單元通過(guò)EU 控制電路從BIU 中取出指令,經(jīng)過(guò)指令譯碼形成各種定時(shí)控制信號(hào),向EU內(nèi)各功能部件發(fā)出相應(yīng)的控制命令,以完成指令所規(guī)定的操作。總線接口單元BIU 是 8086/8088 同外部聯(lián)系的接口。它負(fù)責(zé)所有涉及外部總線的操作,包括取指令、讀操作數(shù)、寫操作數(shù)、地址轉(zhuǎn)換和總線控制等。BIU 內(nèi)部設(shè)置指令預(yù)取隊(duì)列,每當(dāng)指令隊(duì)列有兩個(gè)或兩個(gè)以上的字節(jié)空間,且執(zhí)行單元未向BIU

5、 申請(qǐng)讀 / 寫存儲(chǔ)器操作數(shù)時(shí),BIU 順序地預(yù)取后續(xù)指令的代碼,并填入指令隊(duì)列中。當(dāng)EU 執(zhí)行的是轉(zhuǎn)移指令時(shí),則 BIU 清除當(dāng)前的指令預(yù)取隊(duì)列的內(nèi)容,從新的地址取回指令,并立即送到 EU 去執(zhí)行,然后,從后續(xù)的指令序列中取回指令填滿隊(duì)列。2. 什么是指令流水線?指令流水線需要哪些硬件支持?解: 指令流水線是指8086/8088CPU 內(nèi)部的執(zhí)行單元EU 和總線接口單元BIU 通過(guò)指令預(yù)取隊(duì)列協(xié)同工作從而實(shí)現(xiàn)指令的并行執(zhí)行。指令流水線最主要的硬件支持是BIU 內(nèi)部的指令預(yù)取隊(duì)列。3. 邏輯地址如何轉(zhuǎn)換成物理地址?已知邏輯地址為 2D1EH: 35B8H,對(duì)應(yīng)的物理地址是什么?解: 邏輯地址是

6、段基址和段內(nèi)偏移地址形式的地址。物理地址段基址16段內(nèi)偏移已知邏輯地址為2D1EH: 35B8H,則對(duì)應(yīng)的物理地址2D1EH 1635B8H30798H4. 8088 和 8086 的指令預(yù)取隊(duì)列的長(zhǎng)度分別是多少?解: 8088 的指令預(yù)取隊(duì)列的長(zhǎng)度為4 字節(jié); 8086 的指令預(yù)取隊(duì)列的長(zhǎng)度為6 字節(jié)。5. 簡(jiǎn)述 8086/8088CPU 內(nèi)部的各寄存器的作用。解: AX、 BX、CX 和 DX 通用寄存器一般用于存放參與運(yùn)算的數(shù)據(jù)或運(yùn)算的結(jié)果。SP:用于存放堆棧棧頂?shù)亩蝺?nèi)偏移量。BP:用于存放訪問(wèn)內(nèi)存時(shí)的偏移地址。SP和 BP 也可以用來(lái)存放數(shù)據(jù),它們的默認(rèn)段寄存器都是SS。SI和 DI

7、通常在間接尋址方式中存放操作數(shù)的偏移地址。在串操作指令中,DI 的默認(rèn)段寄存器是 ES。 SI 和 DI 也可以用來(lái)存放數(shù)據(jù)。CS:代碼段寄存器,用于存放代碼段的段基址。DS:數(shù)據(jù)段寄存器,用于存放數(shù)據(jù)段的段基址。SS:堆棧段寄存器,用于存放堆棧段的段基址。ES:附加段寄存器,用于存放附加段的段基址。IP:指令指針寄存器,用于存放 CPU即將執(zhí)行的下一條指令在代碼段中的段內(nèi)偏移地址。FLAGS:標(biāo)志寄存器,用于存放指令執(zhí)行結(jié)果的特征。6. 8086/8088CPU 內(nèi)部的狀態(tài)標(biāo)志寄存器共有幾位標(biāo)志位?各位的含義是什么?.解: 狀態(tài)標(biāo)志寄存器共有9 位標(biāo)志位,其中包含6 個(gè)狀態(tài)標(biāo)志位和3 個(gè)控制

8、標(biāo)志位。狀態(tài)標(biāo)志位:CF( Carry Flag):進(jìn)位標(biāo)志。當(dāng)算術(shù)運(yùn)算結(jié)果使最高位產(chǎn)生進(jìn)位或借位時(shí),則CF=1;否則 CF=0。PF( Parity Flag):奇偶標(biāo)志。若運(yùn)算結(jié)果中的低8 位含有偶數(shù)個(gè)1,則 PF=1;否則 PF=0。AF( Auxiliary carry Flag):輔助進(jìn)位標(biāo)志。運(yùn)算過(guò)程中若D3 位向 D4 有進(jìn)位或借位時(shí), AF=1;否則 AF=0。ZF(Zero Flag):零標(biāo)志。若運(yùn)算結(jié)果為0,則 ZF=1;否則 ZF=0。SF( Sign Flag):符號(hào)標(biāo)志。若運(yùn)算結(jié)果為負(fù),則SF=1;否則 SF=0。OF(Overflow Flag):溢出標(biāo)志。當(dāng)帶符號(hào)

9、數(shù)的補(bǔ)碼運(yùn)算結(jié)果超出機(jī)器所能表達(dá)的范圍時(shí),就會(huì)產(chǎn)生溢出,這時(shí)OF=1;否則 OF=0??刂茦?biāo)志位:DF( Direction Flag):方向標(biāo)志??刂拼僮髦噶畹牡刂纷兓姆较颉.?dāng)DF=0時(shí),串操作指令的地址指針按增量變化;當(dāng)DF=1 時(shí),串操作指令的地址指針按減量變化。IF( Interrupt Flag ):中斷允許標(biāo)志。控制微處理器是否允許響應(yīng)可屏蔽中斷請(qǐng)求。若 IF=1,則允許響應(yīng);否則禁止響應(yīng)。TF( Trap Flag):?jiǎn)尾綐?biāo)志。TF=1 時(shí), CPU工作在單步方式。7. 8086/8088 系統(tǒng)中存儲(chǔ)器的分段原則是什么?解: 分段原則是要求段的起始單元的物理地址是16 的整數(shù)

10、倍,每段的物理長(zhǎng)度為64KB。8. 當(dāng) ALE有效時(shí), 8088 的地址 / 數(shù)據(jù)總線上將出現(xiàn)什么信息?解: 當(dāng) ALE有效時(shí), 8088 的地址 / 數(shù)據(jù)總線上將出現(xiàn)地址信息。9. READY管腳的作用是什么?解: READY用于微處理器時(shí)序中插入等待狀態(tài)。若該引腳被置為低電平,則微處理器進(jìn)入等待狀態(tài)并保持空閑;若該引腳被置為高電平,則它對(duì)微處理器的操作不產(chǎn)生影響。CPU在讀、寫操作時(shí)序中的T3 時(shí)鐘周期開始處,通過(guò)檢測(cè)READY管腳的狀態(tài)來(lái)決定是否插入 TW 等待時(shí)鐘周期,以解決CPU與存儲(chǔ)器或I/O 接口之間速度不匹配的矛盾。10. 為什么在基于 8086/8088 的系統(tǒng)中經(jīng)常需要使用

11、緩沖器?解: 由于基于 8086/8088 的系統(tǒng)驅(qū)動(dòng)能力的不足,需要使用緩沖器。11. 8088 工作在最小模式下包含哪些控制信號(hào)?解: 最小模式下包含的控制信號(hào)有: RD、 WR、IO/M 、 ALE、 DT/R、DEN和 INTA 等信號(hào)。12. 若 CS=4000H,則當(dāng)前代碼段可尋址的存儲(chǔ)空間范圍是多少?解: CS=4000H時(shí),當(dāng)前代碼段可尋址的存儲(chǔ)空間范圍為40000H4FFFFH。.第三章習(xí)題及答案1. 什么叫尋址方式? 8086 指令系統(tǒng)中有哪幾種尋址方式?解:尋址方式,即獲得地址的方法,主要指獲得段內(nèi)偏移地址的方法,段基址常采用默認(rèn)方式獲得。8086CPU 指令系統(tǒng)的尋址方

12、式有兩類:獲得指令中操作數(shù)地址的方法。獲得要執(zhí)行的下一條指令的地址的方法。8086 指令系統(tǒng)中有8 種操作數(shù)尋址方式,立即尋址。2. 下列指令中 BUFF為字節(jié)類型變量, DATA 為常量, 指出下列指令中源操作數(shù)的尋址方式:( 1) MOV AX, 1200( 2) MOV AL, BUFF( 3) SUB BX, 2000H( 4) MOV CX, SI( 5) MOV DX, DATASI( 6) MOV BL, SIBX( 7) MOV DI, AX( 8) ADD AX, DATADI+BP( 9) PUSHF( 10)MOV BX, ES:SI解:(1) MOV AX, 1200;

13、立即尋址( 2) MOV AL, BUFF;直接尋址( 3) SUB BX, 2000H;直接尋址( 4) MOV CX, SI;寄存器間接尋址( 5) MOV DX, DATASI;寄存器相對(duì)尋址(6) MOV BL, SIBX;基址變址尋址(7) MOV DI, AX;寄存器尋址(8) ADD AX, DATADI+BP;基址變址相對(duì)尋址(9) PUSHF;隱含尋址(10) MOV BX, ES:SI;寄存器間接尋址3. 指出下列指令的錯(cuò)誤并改正。( 1) MOV DS, 1200( 2) MOV AL, BX( 3) SUB 33H, AL( 4)PUSH AL( 5) MUL 45H(

14、 6)MOV BX, SI( 7)MOVSBYTE PTRDS:DI, BYTE PTR DS:SI( 8)ADD DATADI+BP, ES:CX( 9) JMP BYTE PTRSI( 10) OUT 3F8H, AL解:( 1) MOV DS, 1200;不能用立即數(shù)給段基址寄存器賦值( 2) MOV AL, BX;操作數(shù)類型不一致.( 3) SUB 33H, AL;立即數(shù)不能作為目的操作數(shù)( 4) PUSH AL;壓棧指令的操作數(shù)必須是字類型( 5) MUL 45H;乘法指令中的操作數(shù)不能是立即數(shù)( 6) MOV BX, SI;源和目的操作數(shù)不能同時(shí)為內(nèi)存操作數(shù)( 7) MOVSBYT

15、E PTR DS:DI, BYTE PTR DS:SI ; 目的操作數(shù)應(yīng)該在ES段。( 8) ADD DATADI+BP, ES:CX;CX 不能做間址寄存器使用( 9) JMPBYTE PTRSI;操作數(shù)必須是 字類型( 10) OUT 3F8H, AL;16 位的端口地址不能直接在輸入輸出指令中使用。4. 根據(jù)要求寫出一條(或幾條)匯編語(yǔ)言指令。(1)將立即數(shù) 4000H 送入寄存器 BX。( 2)將立即數(shù) 4000H 送入段寄存器 DS。( 3)將變址寄存器DI 的內(nèi)容送入數(shù)據(jù)段中2000H 的存儲(chǔ)單元。( 4)把數(shù)據(jù)段中2000H 存儲(chǔ)單元的內(nèi)容送段寄存器ES。( 5)將立即數(shù)3DH

16、與 AL 相加,結(jié)果送回AL。( 6)把 BX 與 CX寄存器內(nèi)容相加,結(jié)果送入BX。( 7)寄存器 BX 中的低 4 位內(nèi)容保持不變,其他位按位取反,結(jié)果仍在BX中。( 8)實(shí)現(xiàn) AX 與-128 的乘積運(yùn)算。( 9)實(shí)現(xiàn) CX 中高、低 8 位內(nèi)容的交換。( 10)將 DX 中 D0、 D4、 D8 位置 1,其余位保持不變。解:( 1)將立即數(shù) 4000H 送入寄存器 BX。MOVBX,4000H( 2)將立即數(shù)4000H 送入段寄存器DS。MOV AX, 4000HMOV DS, AX( 3)將變址寄存器DI 的內(nèi)容送入數(shù)據(jù)段中2000H 的存儲(chǔ)單元。MOV 2000H,DI( 4)把

17、數(shù)據(jù)段中2000H 存儲(chǔ)單元的內(nèi)容送段寄存器ES。MOV AX,2000HMOV ES,AX( 5)將立即數(shù)3DH 與 AL 相加,結(jié)果送回AL。ADD AL,3DH( 6)把 BX 與 CX 寄存器內(nèi)容相加,結(jié)果送入BX。ADD BX,CX( 7)寄存器 BX 中的低 4 位內(nèi)容保持不變 ,其他位按位取反,結(jié)果仍在BX 中。MOV AX, BX,NOT AXAND AX,0FFF0HAND BX,000FHOR BX,AX( 8)實(shí)現(xiàn) AX 與 -128 的乘積運(yùn)算。MOV BX,-128IMULBX( 9)實(shí)現(xiàn) CX中高、低 8 位內(nèi)容的交換。MOV AL,8.ROL CX AL( 10)

18、將 DX 中 D0、D4、D8 位置 1,其余位保持不變。0R DX,0111H5. 設(shè) SS=2000H, SP=1000H, SI=2300,DI=7800, BX=9A00H。說(shuō)明執(zhí)行下面每條指令時(shí),堆棧內(nèi)容的變化和堆棧指針的值。PUSHSIPUSHDIPOPBX解: PUSHSI( 0FFFH) =23H( 0FFEH)=00HSP=0FFEHPUSHDI( 0FFDH)=78H( 0FFCH) =00HSP=0FFCHPOPBXBX=7800HSP=0FFEH6. 內(nèi)存中 18FC0H、18FC1H、18FC2H單元的內(nèi)容分別為 23H、55、5AH,DS=1000H,BX=8FC0

19、H, SI=1,執(zhí)行下面兩條指令后AX=? DX=?MOVAX, BX+SILEADX, BX+SI解: AX=5A55HDX=8FC1H7. 回答下列問(wèn)題:( 1)設(shè) AL=7FH,執(zhí)行 CBW 指令后, AX=?( 2)設(shè) AX=8A9CH,執(zhí)行 CWD 指令后, AX=?DX=?解:( 1)設(shè) AL=7FH,執(zhí)行 CBW 指令后, AX=007FH( 2)設(shè) AX=8A9CH,執(zhí)行 CWD 指令后, AX=8A9CH DX=FFFFH8. 執(zhí)行以下兩條指令后, FLAGS的 6 個(gè)狀態(tài)標(biāo)志位的值是什么?MOV AX, 847BHADD AX, 9438H結(jié)果為 118B3H解: CF=1

20、PF=0(為運(yùn)算結(jié)果的低8 位奇偶)AF=1ZF=0SF=0OF=19. 下面程序段將 03E8H 轉(zhuǎn)換成十進(jìn)制數(shù)并顯示,填寫指令后的空格。MOV AX, 03E8H;AH=03H, AL= E8HMOV CX, 4MOV DI, 2000H;DI=2000HMOV BX, 10;BH=00, BL= 0AHGO0: SUB DX, DX;CF=0, ZF=1.DIVBX;AX=64H,DX= 0MOV DI, DL;DI=0INCDILOOP GO0;CX= 3MOV CX, 4GO1: DEC DI;DI= 2003HMOV DL, DI;DL=01OR DL, 30H;DL=31HMOV

21、 AH, 02;顯示 1 位十進(jìn)制數(shù) 1INT 21HLOOP GO110. 用串操作指令替換以下程序段:ABC: MOVAL, SIMOVES:DI, ALINC SIINC DILOOPABC解: REP MOVSB11. 設(shè) AX=AAH,順序執(zhí)行下列各條指令,填寫空格。(1) XORAX, 0FFFFH;AX=(2) ANDAX, 13A0H;AX=(3) OR AX, 25C9H;AX=(4) TEST AX, 0004H;AX=解: (1)XORAX, 0FFFFH;AX= FF55H(2)ANDAX, 13A0H;AX= 00A0H(3)ORAX, 25C9H;AX= 25EBH

22、(4)TEST AX, 0004H;AX= 00AAH12. 試寫出執(zhí)行下列 3 條指令后 BX寄存器的內(nèi)容。MOVCL, 2HMOVBX,CO2DHSHRBX, CL解: BX=300BH13. 執(zhí)行下列程序段后, AX、 BX的內(nèi)容各是什么?( 1) MOV AX,0001HMOV BX,8000HNEG AX; 0-0001HMOV CX,4AA : SHL AX,1 RCL BX,1LOOP AAHLT解: AX=FFF0HBX=000FH.( 2)MOV AX ,0MOV BX ,1MOV CX , 100A:ADD AX ,BXINC BXLOOP AHLT解: AX=8080HB

23、X=0101H14. 編寫程序段,實(shí)現(xiàn)下述要求:( 1) 使 AX 寄存器的低 4 位清 0,其余位不變。( 2) 使 BX 寄存器的低 4 位置 1,其余位不變。(3)測(cè)試 AX的第 0位和第 4位,兩位都是 1 時(shí)將 AL 清 0。(4)測(cè)試 AX的第 0位和第 4位,兩位中有一個(gè)為 1 時(shí)將 AL 清 0。解:(1)使 AX 寄存器的低 4 位清 0,其余位不變。ANDAX, 0FFF0H(2)使 BX 寄存器的低 4 位置 1,其余位不變。ORAX, 0FH(3)測(cè)試 AX 的第 0 位和第 4 位,兩位都是1 時(shí)將 AL 清 0。TEST AX,01HJZAATEST AX,10HJ

24、ZAAMOV AL,0HLTAA: .(4)測(cè)試 AX 的第 0 位和第 4 位,兩位中有一個(gè)為1 時(shí)將 AL清 0。TEST AX, 11HJZ AAMOV AL,0AA: .15. 編寫程序段,完成把 AX 中的 16 進(jìn)制數(shù)轉(zhuǎn)換為 ASCII碼,并將對(duì)應(yīng)的 ASCII碼依次存入 MEM 開始的存儲(chǔ)單元中。 例如,當(dāng) AX 的內(nèi)容為 37B6H 時(shí), MEM 開始的 4 個(gè)單元的內(nèi)容依次為 33H, 37H,42H, 36H。解:MOV CX,4LEA SI,MEMADD SI,3;SI指向 MEM+3CC:MOV BX,AX;保存原始數(shù)據(jù)AND AX, 000FH;取個(gè)位數(shù)CMP AL,

25、 9JAAA;在 AB 之間就加 37H.ADD AL,30H;在 09 之間就加 30HJMPBBAA: ADD AL,37HBB:MOV SI,AL;保存 ASCII值DEC SIPUSH CXMOV AX,BXMOV CL,4SHR AX,CL;準(zhǔn)備取下一個(gè)數(shù)POP CXLOOPCC16.編寫程序段,求從TABLE開始的 10 個(gè)無(wú)符號(hào)數(shù)的和,結(jié)果放在SUM 單元中。解:LEA SI,TABLEMOV CX,10XOR AX,AXNEXT:ADD AL,SIADC AH,0INC SILOOP NEXTMOV SUM,AX17.編寫程序段,從鍵盤上輸入字符串HELLO,并在串尾加結(jié)束標(biāo)志

26、$。解: LEADX,STRING;設(shè)置字符串存放緩沖區(qū)首地址MOVAH ,0AH;調(diào)用 10 號(hào)功能,輸入字符串INT21HMOVCL,STRING+1;實(shí)際鍵入的字符個(gè)數(shù)送CLXORCH,CHADDDX,2ADDDX,CX;得到字符串尾地址MOVBX,DXMOVBYTE PTRBX,$18. 編寫程序段,在屏幕上依次顯示1、 2、 3、 A、 B、 C。解:LEA BX,STR;STR為 6 個(gè)字符的存放區(qū)域首地址MOV CX,6LPP:MOV AH,2MOV DL,BXINC BXINT 21H;利用 2 號(hào)功能調(diào)用依次先生6 個(gè)字符LOOP LPP19.編寫程序段,在屏幕上顯示字符串“

27、Hello World ”。解:LEA DX,STRING; STRING字符的存放區(qū)域首地址MOV AH,09HINT 21H; 利用 9 號(hào)功能調(diào)用顯示字符串.20. 編寫程序段,把內(nèi)存中首地址為MEM1 的 200 個(gè)字節(jié)送到首地址為MEM2 的區(qū)域。解: MOVAX,SEG MEM1MOVDS, AX;設(shè)定源串段地址MOVAX,SEG MEM2MOVES, AX;設(shè)定目標(biāo)串段地址MOV SI, 0;設(shè)定源串偏移地址MOVDI,0;設(shè)定目標(biāo)串偏移地址MOVCX,200;串長(zhǎng)度送 CXCLD;( DF)=0,使地址指針按增量方向修改REPMOVSB;每次傳送一個(gè)字節(jié),并自動(dòng)HLT21. 編

28、寫程序段, 以 4000H 為起始地址的 32 個(gè)單元中存有 32 個(gè)有符號(hào)數(shù), 統(tǒng)計(jì)其中負(fù)數(shù)的個(gè)數(shù),并將統(tǒng)計(jì)結(jié)果保存在BUFFER單元中。解: START: MOV DI,OFFSET BUFFERXOR AL,ALMOV DI,ALMOV SI,4000HMOV CX,32AA:MOV AL,SIOR AL,ALJNS X1INC DIX1:INC SINEXT:LOOP AAHLT.第四章習(xí)題及答案1. 什么叫匯編?匯編語(yǔ)言源程序的處理過(guò)程是什么?解:任何 CPU 都只能執(zhí)行機(jī)器語(yǔ)言程序。 匯編語(yǔ)言不是機(jī)器語(yǔ)言, 匯編語(yǔ)言程序必須通過(guò)具有“翻譯”功能的系統(tǒng)程序的處理,處理的過(guò)程稱為匯編。

29、匯編語(yǔ)言源程序經(jīng)過(guò)匯編生成機(jī)器語(yǔ)言目標(biāo)程序, 簡(jiǎn)稱目標(biāo)程序。 目標(biāo)程序經(jīng)過(guò)連接程序連接,就得到可執(zhí)行的機(jī)器語(yǔ)言程序文件。2. 匯編語(yǔ)言的語(yǔ)句類型有哪些?各有什么特點(diǎn)?解:匯編語(yǔ)言的語(yǔ)句類型有兩種:指示性語(yǔ)句和指令性語(yǔ)句。指示性語(yǔ)句可以位于任何段中,指令性語(yǔ)句必須位于代碼段內(nèi)。指示性語(yǔ)句又稱為偽操作語(yǔ)句,它不是8088/8086CPU 的指令,它與匯編程序(assembler)有關(guān)。指示性語(yǔ)句的功能主要是變量定義、為數(shù)據(jù)分配存儲(chǔ)空間、告訴匯編程序如何對(duì)源程序匯編等。源程序匯編后指示性語(yǔ)句不生成目標(biāo)代碼,所以常被稱為偽指令。指令性語(yǔ)句指令性語(yǔ)句是可執(zhí)行語(yǔ)句,是 8088/8086CPU 的指令。源

30、程序匯編后指令性語(yǔ)句生成目標(biāo)代碼。第 3 章中介紹的所有指令都是指令性語(yǔ)句的主體,其操作數(shù)最多只能有兩個(gè)。3. 匯編語(yǔ)言源程序的基本結(jié)構(gòu)是什么?解:匯編語(yǔ)言源程序由若干段組成: 數(shù)據(jù)段、附件數(shù)據(jù)段、堆棧段和代碼段 等,段與段之間的順序可以 隨意排列 ,每一段由 SEGMENT開始,以 ENDS結(jié)束,每段的開始和結(jié)束都附有相同的名字。一個(gè)程序一般定義三個(gè)段:數(shù)據(jù)段、堆棧段和代碼段,必要時(shí)增加定義附加數(shù)據(jù)段,能獨(dú)立運(yùn)行的程序至少包含一個(gè)代碼段。4. 寫出完成下述要求的變量定義的語(yǔ)句:( 1) 為緩沖區(qū) BUFF保留 200 個(gè)字節(jié)的內(nèi)存空間( 2) 將字符串 BYTE, WORD存放于某數(shù)據(jù)區(qū)(

31、3) 在數(shù)據(jù)區(qū)中存入下列 5 個(gè)數(shù)據(jù): 2040H,0300H,10H,0020H,1048H解:(1)為緩沖區(qū)BUFF保留 200 個(gè)字節(jié)的內(nèi)存空間BUFF DB 200 DUP(?)(2)將字符串 BYTE, WORD存放于某數(shù)據(jù)區(qū)DBBYTE,WORD( 3)在數(shù)據(jù)區(qū)中存入下列 5 個(gè)數(shù)據(jù): 2040H,0300H,10H,0020H,1048H DW 2040H,0300H,10H,0020H,1048H.5. 畫出下面數(shù)據(jù)段匯編后的內(nèi)存圖,并標(biāo)出變量的位置。AA009HDATASEGMENTFEH45HAAEQU 78H01HAA0DB 09H,-2,45H,2 DUP ( 01H,

32、?) ,AB ?HAA1DW -2,34H+AA01H?AA2DD 12H;雙字類型41HDATAENDS42HAA1FEH解:如圖所示。FFHACHAA000H6. 設(shè)程序中的數(shù)據(jù)定義如下:12HNAMEDB 30 DUP ( ?)00H00HLISTDB 1,8,3,200HADDRDW 30 DUP (?)( 1) 取 NAME 的偏移地址放入 SI( 2) 取 LIST的前兩個(gè)字節(jié)存入 AX( 3) 取 LIST實(shí)際長(zhǎng)度解:( 1)取 NAME 的偏移地址放入SIMOV SI,OFFSET NAME(2)取 LIST的前兩個(gè)字節(jié)存入AXMOV AX,WORD PTR LIST(3)取

33、LIST實(shí)際長(zhǎng)度MOV AX,SIZE LIST; P857. 依據(jù)下列指示性語(yǔ)句,求表達(dá)式的值。SHOW0 EQU 200 SHOW1 EQU 15SHOW2EQU2 SHOW0X100+55 SHOW0 AND SHOW1-15 (SHOW0/SHOW2) MOD SHOW1 SHOW1 OR SHOW0 解:( 1) SHOW0 X 100+55=200X100+55SHOW0 AND SHOW1-15=C8H AND 0FH - 0FH = ;0減法的優(yōu)先級(jí)過(guò)于AND ( SHOW0/SHOW2) MOD SHOW1=100 MOD 15=10 SHOW1 OR SHOW0=0FH O

34、R C8H=CF8. 編寫程序,統(tǒng)計(jì)寄存器 BX 中二進(jìn)制位“ 1”的個(gè)數(shù),結(jié)果存在 AL 中。DATASEGMENTNUMDW ?DATA ENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX, DATAMOVDS, AXMOVAL,0.MOVBX, NUM;把數(shù) X 傳送給 BXMOVCX,16NEXT:SHLAX, 1JNCNEXT1INCALNEXT1: LOOPNEXTMOVAH, 4CHINT21HCODEENDSENDSTART9. 某數(shù)據(jù)塊存放在 BUFFER開始的 100 個(gè)字節(jié)單元中,試編寫程序統(tǒng)計(jì)數(shù)據(jù)塊中正數(shù)(不包括 0)

35、的個(gè)數(shù),并將統(tǒng)計(jì)的結(jié)果存放到NUMBER單元中。解 DATASEGMENTBUFFER DB 100(?)NUMBER DB 0DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXXORDX, DXMOVCX,100MOVSI,OFFSET BUFFERNEXT: MOVAL,SIINC SITEST AL,80H;是正數(shù)嗎?JNZ GOON;否,轉(zhuǎn)移到 GOONCMP AL,0JZ GOONINC DXGOON: LOOPNEXTMOVNUMBER,DXMOVAH, 4CHINT21HCODEENDSENDS

36、TART10. 閱讀下面程序段,指出它的功能。DATA SEGMENTASCIIDB 30H, 31H, 32H, 33H ,34H ,35H, 36H, 37H, 38H, 39HHEXDB 04HDATAENDSCODESEGMENTASSUMECS:CODE, DS: DATASTART:MOV AX, DATA.MOV DS, AXMOV BX,OFFSET ASCIIMOV AL,HEXAND AL,0FHMOV AL,BX+ALMOV DL,ALMOV AH,2INT 21HMOV AH,4CHINT 21HCODEENDSEND START解:這時(shí)一個(gè)查表程序,查表取出HEX的

37、ASCII。并在屏幕上顯示ASCII碼11. 某數(shù)據(jù)區(qū)中有 100 個(gè)小寫字母,編程把它們轉(zhuǎn)換成大寫字母,并在屏幕上顯示。解: DATASEGMENTBUFFER DB 100(?)DATAENDSCODE SEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXMOVCX,100MOVSI,OFFSET BUFFERNEXT:MOVAL,SIINCSICMPAL,61H;是小寫字母嗎 ?JBGOON;否,轉(zhuǎn)移到 GOON(小于則轉(zhuǎn)移)SUBAL,20HMOVDL,ALMOVAH,2INT21HGOON: LOOPNEXTMOVAH, 4

38、CHINT21HCODEENDSEND START12. 子程序的參數(shù)傳遞有哪些方法?解:主程序在調(diào)用子程序時(shí), 要為子程序預(yù)置數(shù)據(jù), 在子程序返回時(shí)給出數(shù)據(jù)處理的結(jié)果,這稱為數(shù)據(jù)傳送或變量傳送。方法主要有以下幾種: 寄存器傳送。. 地址表傳送,需要傳送的參數(shù)較多時(shí)可以利用存儲(chǔ)單元傳送。在調(diào)用子程序前,把所有參數(shù)依次送入地址表,然后將地址表的首地址作為子程序入口參數(shù)傳遞給子程序。 堆棧傳送,這種方式要審慎注意堆棧的變化情況。13. 過(guò)程定義的一般格式是什么?子程序開始處為什么常用PUSH 指令?返回前用POP指令?解:格式見(jiàn)P90,如果一個(gè)子程序被多次調(diào)用,保護(hù)與恢復(fù)(主程序)現(xiàn)場(chǎng)就非常重要。

39、主程序每次調(diào)用子程序時(shí), 主程序的現(xiàn)場(chǎng)不會(huì)相同,保護(hù)與恢復(fù)現(xiàn)場(chǎng)的工作就只能在子程序中進(jìn)行。原則上,在子程序中,首先把子程序中要用到的寄存器、存儲(chǔ)單元、狀態(tài)標(biāo)志等壓入堆?;虼嫒胩囟臻g中, 然后子程序才可以使用它們, 使用完后再將它們彈出堆棧或從特定空間中取出,恢復(fù)它們?cè)瓉?lái)的值,即恢復(fù)主程序現(xiàn)場(chǎng)。保護(hù)和恢復(fù)現(xiàn)場(chǎng)常使用PUSH和 POP指令。14. 閱讀下面程序段,指出它的功能。DATA SEGMENTSTRING DB Exxperience LENGDW 100KEYDB xDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATAMAIN PROC

40、 FARSTART: MOV AX, DATAMOV DS, AXMOV ES, AXLEA BX, STRING;字符串地址 -BXLEA CX, LENG;字符串長(zhǎng) -CXPUSH BXPUSH CXMOV AL, KEYCALL DELCHARMOV AH, 4CHINT21HMAIN ENDPDELCHAR PROCPUSH BPMOV BP, SPPUSH SIPUSH DICLDMOV SI, BP+4MOV CX, SIMOV DI, BP+6REPNE SCASBDI-DI+SI+SP-BPBP-BP+IP-IP+BP+4-SICLCHBP+6-DIBLBH.JNE DONEM

41、OV SI, BP+4DEC WORD PTRSIMOV SI, DIDEC DIREP MOVSBDONE:POPDIPOPSIPOPBPRETDELCHAR ENDPCODE ENDSEND START解:從字符串中刪去多余的X字符。15. 顯示兩位壓縮 BCD碼值( 099),要求不顯示前導(dǎo) 0。解: DATASEGMENTBUFDB?; 內(nèi)存中的兩位壓縮BCD碼DATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART: MOVAX,DATAMOVDS,AXMOVAL, BUFMOVBL,ALNEXT:MOV CL,4SHR AL, CLAND A

42、L,0FHCMP AL,0JZ GOONADDAL,30H;顯示高位 BCD碼MOVDL,ALMOVAH,2INT21HGOON: MOV AL,BLAND AL,0FHADD AL,30H;顯示低位 BCD碼MOVDL,ALMOVAH,2INT21HMOVAH, 4CHINT21HCODEENDSENDSTART.16. 某數(shù)據(jù)區(qū)中連續(xù)存放著 100 個(gè)整數(shù),要求將其中為 0 的元素刪除,并將保留的數(shù)據(jù)連續(xù)存放。解:DATASEGMENTSTRING DB 100(?)LENGDW100KEYDB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES

43、:DATAMAIN PROC FARSTART: MOV AX, DATAMOV DS, AXMOV ES, AXLEA BX, STRINGLEA CX, LENGPUSH BXPUSH CXMOV AL, KEYCALL DELCHARMOV AH, 4CHINT21HMAIN ENDPDELCHAR PROCPUSH BPMOV BP, SPPUSH SIPUSH DICLDMOV SI, BP+4MOV CX, SIMOV DI, BP+6REPNE SCASBJNE DONEMOV SI, BP+4DEC WORD PTRSIMOV SI, DIDEC DIREP MOVSBDONE:POPDIPOPSIPOPBPRETDELCHAR ENDPCODE ENDS.END START17. 編程,把以DATA 為首址的兩個(gè)連續(xù)單元中的16 位

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論