《微型计算机技术孙德文版课后习题答案全解.docx》由会员分享,可在线阅读,更多相关《微型计算机技术孙德文版课后习题答案全解.docx(47页珍藏版)》请在三一办公上搜索。
1、精选优质文档-倾情为你奉上第1章(略)第2章(略)第3章3. 1. 已知DS091DH,SS1E4AH,AX1234H,BX0024H,CX5678H,BP0024H,SI0012H,DI0032H,(09226H)00F6H,(09228H)1E40H,(1E4F6H)091DH。在以上给出的环境下,试问下列指令或指令段执行后的结果如何?(1) MOV CL,BX+20HSI;(2) MOVBPDI,CX;(3) LEA BX,BX+20HSIMOV AX,BX+2;(4) LDS SI,BXDIMOVSI,BX;(5) XCHG CX,BX+32HXCHGBX+20HSI,AX解:(1)
2、CL=09226H=F6H(2) BPDI=1E4F6H=CX=5678H(3) BX=0056H; AX=09228H=1E40H(4) SI=09226=00F6H; SI=1E4F6H=BX=0024H(5) AX=5678H; BX+20HSI=1234H3. 2. 设,DS1000H:SS2000H,AX1A2BH,BX1200H,CX339AH,BP1200H,SP1350H,SI1354H,(1135OH)OA5H,(11351H)3CH,(11352H)OFFH,(11353H)26H,(11354H)52H,(11355H)0E7H,(126A4H)9DH,(126A5H)1
3、6H,(21350H)88H,(21351H)51H下列各指令都在此环境下执行,在下列各小题的空格中填入相应各指令的执行结果。(1) MOV AX,1352HAX (2) MOV AX,1352HAX (3) MOV 0150HBX,CH(11350H) ,(11351H) (4) MOV AX,0150HBPAX (5) POP AXAX ,SP (6) ADDSI,CX(11354H) ,(11355H) ,SF ZF ,PF ,CF ,OF (7) SUB BH,0150HBXSIBH ,SF ,ZF ,PF ,CF ,OF (8) INC BYTE PTR 0152HBX(11352H
4、) ,(11353H),CF(9) INC WORD PTR 0152HBX(11352H) ,(11353H) ,CF (10) SAR BYTE PTR 0150HBX,1(11350H) ,CF ,OF (11) SAL BYTE PTR 0150HBX,(11350H) ,CF ,OF 解:(1) AX=1352H(2) AX=26FFH(3) 11350H=33H; 11351H=3CH(4) AX=5188H(5) AX=5188H ; SP=1352H(6) 11354H=ECH; 11355H=1AH; SF=ZF=PF=OF=0; CF=1(7) BH=75H; SF=ZF=
5、PF=OF=0; CF=1(8) 11352H=00H; 11353H=26H; CF不变(9) 11352H=00H; 11353H=27H; CF不变(10) 11350H=D2H; CF=1; OF=0(11) 11350H=4AH; CF=1; OF=13. 3. 设下列各转移指令的第一字节在内存中的地址为CS2000H和IP016EH,且环境均为;DS6000H,BX16C0H,(616COH)46H,(616C1H)01H,(616C2H)00H,(616C3H)30H,(61732H)70H,(61733H)17H。写出下列各无条件转移指令执行后CS和IP值。各指令左首的16进制
6、编码是该指令的机器码。指令中的目的地址用相应的标号表示。(1) EBE7JMP SHORT AGAIN(2) E90016JMP NEAR PTR OTHER(3) E3JMP BX(4) FF67JMP WORD PTR 0072HBX(5) FFEBJMP DWORD PTRBX解:(1) CS=2000H; IP=0157H(2) CS=2000H; IP=1771H(3) CS=2000H; IP=16C0H(4) CS=3000H; IP=0146H(5) CS=2000H; IP=1770H(6) CS=3000H; IP=0146H3. 4. 阅读下列各小题的指令序列,在后面空格
7、中填入该指令序列的执行结果。(1) MOV BL,85HMOV AL,17HADD,AL,BLDAAAL ,BL ,CF (2) MOV AX,BXNOT AXADD AX,BXINC AXAX ,CF (3) MOV AX,OFF60HSTCMOV DX,96XOR DH,OFFHSBB AX DXAX ,CF (4) MOV BX,OFFFEHXOV CL,2SAR RX,CLBX ,CF 解:(1) AL=02H; BL=85H; CF=1(2) AX=0000H; CF=0(3) AX=0000H; CF=0(4) BX=0FFFFH; CF=13. 5. 阅读分析下列指令序列ADD
8、AX,BXJNO L1JNO L2SUB AX,BXJNC L3JNO L4JMP L5若AX和BX的初始值分别如下列五种情况所示,则执行该指令序列后,程序将分别转向何处执行(注:即写出转移去的目的地址L1L5中的一个)。(1) AX14C6H,BX80DCH(2) AX0B568H,BX54B7H(3) AX42C8H,BX608DH(4) AX0D023H,BX9FD0H(5) AX9FD0H,BX0D023H解:(1) 转向L1(2) 转向L1(3) 转向L2(4) 转向L5(5) 转向L53. 6. AND AL,ALJZ BRCH1RCR AL,1JZ BRCH2RCL AL,1IN
9、C ALJZ BRCH3上述程序运行后,试回答:(1) 当(AL) 时,程序转向BRCH1(2) 当(AL) 时,程序转向BRCH2(3) 当(AL) 时,程序转向BRCH3解:(1) AL= 00H(2) AL=01H(3) AL=0FFH3 .7. 完成下列操作,选用什么指令:(1) 将AX的内容、减去0520H,和上次运算的借位;(2) 将变量名TABL的段地址送AX;解:(1) SBB AX, 0520H(2) MOV AX, SEG TABL3. 8. D1DB 20H DUP(?)D2DW D1请写出用一条指令实现取D1的偏移地址SI中的三种方法。解:(1) MOV SI, OFF
10、SET DI(2) MOV SI, D2(3) LEA SI, DI3. 9. 程序段1程序段2MOV AX,147BHMOV AX,99D8HMOV BX,80DCHMOV BX,9847HADD AX,BXSUB AX,BXJNO L1JNC L3JNC L2JNO L4上述两个程序段执行后,分别转移到哪里?解:(1) 转向L1(2) 转向L33. 10.MOV BX,0FFHAND BX,0FFFHOR BX,0F0FHXORBX,00FFH上述程序段运行后,BX ,CF 解:BX=0F00H; CF=03. 11.CMP AX,BXJGE NEXTXCHG AX,BXNEXT: CMP
11、 AX,CXJGE DONEXCHG AX,CXDONE:试回答:(1) 上述程序段执行后,原有AX,BX,CX中最大数存放在哪个寄存器中?(2) 这三个数是带符号数还是无符号数?解:AX ; 带符号数第4章4.1 画出下列语句中的数据在存储器中的存储情况。ARRAYB DB 63,63H,ABCD,3DUP(?),2 DUP(1,3)ARRAYWDW 1234H,5,AB,CD,?,2DUP(1,3)解: 地址数据地址数据ARRAYB3FH42H63H41H41H44H42H43H43H ?44H ? ?01H ?00H ?03H01H00H03H01H01H00H03H03H34H00H1
12、2H05H00H4. 2. 程序中数据定义如下:DATA1DW ?DATA2DB 32DUP(?)DATA3DD ?DLENGTHEQU DATA1此时DLENGTH的值是多少?解:DLENGTH=38=26H4. 3. 程序中数据定义如下:ARRAYDB ABCDEFRESULTDB ?TABLEDW 20 DUP(?)则执行指令MOV AX,TYPE RESULT后,AX?MOV BX,TYPE TABLE后,BX?MOV CX,LENGTH TABLE后,CX?MOV DX,LENGTH ARRAY后,DX?MOV SI,SIZE TABLE后,SI?MOV DI,SIZE ARRAY后
13、,DI?解:AX=1; BX=2; CX=20; DX=1; SI=40; DI=14. 4. 指令AND AX,7315H AND 0FFH中,两个AND有什么差别?这两个AND操作分别在什么时候执行?解:左为助记符,由CPU执行指令时运算;右为运算符,由汇编程序在汇编时运算。4. 5. 设BX1034H,则执行下列指令MOVAX,BXAND0FFHMOVCX,BXEQ1234H后,AX和CX各为多少?若BX1234H,则结果如何?解:AX=0034H; CX=0000H; AX=0034H;CX=FFFFH 4. 6. 设已知语句为:ORG 0024HDATA1DW 4,12H,+4则执行
14、指令MOVAX,DATA1+4后AX的值是多少?解:AX=002CH4. 7. 已知数据定义语句为:BUFFER DB 16 DUP(O,2DUP(1)则其中字数据单元内容为0100H的单元数是多少?解:16个4. 8. 要在以DA1为首址的数据区中依次存放下列数据; A,B,O,0,C,D,0,0请分别用DB、DW和DD语句实现。解:DAT DB A, B,0,0,C,D,0,0 DAT DW BA,0,DC,0DAT DB BA,DC4. 9. 试按下列要求在数据段中依次书写各数据定义语句:(1) 以DA1为首字节的连接存储单元中存放20H个重复的数据序列:2,3, 10 个4,一个7。(
15、2) DA2为字符串变量,用字变量(DW)设置一字符串;STUDENTS(按 此顺序存放在各单元中)(3) 用等值语句给符号COUNT赋值以DA1为首址的数据区共占有的字节数,此等值语句必须放在最后一语句。解:(1) DAT1 DB 20H DUP (2,3,10 DUP (4),7)(2) DAT2 DW TS, DU ,NE,ST(3) COUNT EQU DATA2-DATA14. 10. 下面程序段是实现从键盘输入十个一位10进数后累加。最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。试把程序段中所空缺的指令填上。XOR BX,BXLOP:MOV AH,01H;键盘字
16、符输入INT 21HMOV AH,BHADD AL,BLMOV BX,AX解:MOV CX, 10AAA4. 11. 下面程序段的功能是把DA1数据区的数09转换为对应的ASCII码。试完善本程序段。DA1DB OOH,O1H,02H,03H,04H,05H,06H,07H,08H,09HASCIDB 10 DUP(?)CUNTASCI-DA1LEA SI,DA1LEA DI,ADCILOP1:MOY AL,SIMOVDI,ALINC SIINC DILOOP LOP1解:MOV CX, COUTADD AL, 30H4. 12. BUFFABDQCAXYZCONTEQU -BUFFCLDLE
17、A DI,BUFFMOV CX,CONTMOV AL,XOR DX,DXNEXT:REPNZ SCA,SBCMP CX,0JZ K1INC DXJMP NEXTK1:上述程序段运行后,DX中的值表示的意义是什么?解:DX中为$个数4. 13. 设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。DATASEGMENTADB1,2,3,4,5,6,7,8,9,0AHDRG OO10HBDB 0AH,9,8,7,6,5,4,3,2,1DATAENDSLEA SI,ALEA DO,BMOV CX,10LOP:LODSBXCHG AL,DIDEC DISTO
18、SBINC DILOOP LOP解:XCHG SI, DIXCHG SI, DI4. 14. 现有一子程序:SUB1PROCTEST AL,80HJE PLUSTEST BL,80HJNE EXITOJMP XCHANGEPLUS:TEST BL,80HJE EITOXCHANGE:XCHG AL,BLEWITO:RETSUB1ENDP试回答:(1) 子程序的功能是什么?(2) 如调用子程序前AL9AH,BL77H,那么返回主程序时,AL?BL?解:(1) 测试AL, BL两数的符号,如为同号直接返回,如为异号,则AL与BL交换(2) AL=77H, BL=9AH4. 15. 编写一程序段,将
19、AL中的第7和0位,第6和1位,第5和2位,第4和3位互换。解:MOV CX, 8 MOV AH, 0K1: SHR AL, 1 RCL AH, 1 DEC CX JNZ K1 MOV AL,AH4. 16. 试编写一程序段,在CHAR为首址的26个字节单元中依次存放字母AZ解:MOV AL, A MOV DI, OFFSET CHAR MOV CX, 26LOP: MOV DI, AL INC AL INC DI LOOP LOP4. 17. 设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):X当X0时Y|X|当X0时解:MOV AL, X CMP AL,
20、0 JGE BIGR NEG ALBIGR: MOV Y, AL4. 18. 编程序段计算SUMal+a2+a20,已知a1a20依次存放在以BUF为首址的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。此题考生勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。)解:MOV AX, 0 MOV BX, OFFSET BUF MOV CX, 20LOP: ADD AX, BX INC BX INC BX LOOP LOP MOV SUM, AX4. 19. 编写一个完整的源程序,将BUF字节单元存放的两位BCD码,转换成2个字节的ASCI
21、I码,并分别存放在ASC和ASC+1字节单元中。例如:(BUF字节单元)58H,那么(ASC字节单元)35H,(ASC+1字节单元)38H。解:DATA SEGMENTBUF DB 58HASC DB 2 DUP (?)DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP (0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART : MOV AX, DATA MOV DS, AX MOV AL, BUF AND AL, 0F0H MOV CL, 4 SHR AL, CL OR AL, 30H MOV A
22、SC, AL MOV AL, BUF AND AL, 0FH OR AL, 30HMOV ASC+1, ALMOV AL, 4CHINT 21H CODE ENDSEND START4. 20. 在A1单元开始定义了一长度为N的字符串,找出其中所有的小写字母并存放到以A2开始的存储区中。统计出小写字母的个数,存放到SL单元中。请编一完整的源程序。数据段如下:DATASEGMENTA1DBNEQU A1A2DB N DUP(?)SLDB ?DATAENDS解:DATA SEGMENTA1 DB N EQU $-A1A2 DB N DUP (?)SL DB ?DATA ENDS STACK SEG
23、MENT PARA STACK DW 10H DUP (0)START ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART : MOV AX, DATA MOV DS, AX LEA SI, A1 LEA DI, A2 MOV CX, N XOR BL, BLAGAIN: MOV AL, SI CMP AL, a JB EXIT CMP AL, z JA EXITMOV DI, ALINC BLINC DIEXIT: INC SI LOOP AGAIN MOV SL, BL MOV AH, 4CH INT 21H CODE ENDS
24、END START4. 21. 设在DAT单元存放一个-9+9的字节数据,在SQRTAB数据区中存放09的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。数据段如下:DATASEGMENTDATDB XXHSQRTABDB 0,1,4,9,7781SQRDB ?DATAENDS解:DATA SEGMENTDAT DB XXH SQRTAB DB 0,1,4,9, ,81SQR DB ?DATA ENDSSTACK1 SEGMENT PARA STACK DB 20H DUP (0)STACK1 ENDSCODE SE
25、GMENT ASSUME CS:CODE, DS:DATA, SS:STACK1START : MOV AX, DATA MOV DS, AX CALL SUBROT MOV AH, 4CH INT 21HSUBROT PROC PUSH AX PUSH BX LEA BX, SQRTAB MOV AL, DATTEST AL, 80HJNS NEXTNEG ALNEXT: XLAT SQRTAB MOV SQR, AL POP BX POP AX RETSUBROT ENDSCODE ENDS END START4. 22. 编写能完成下列要求的程序:测试字节数据STATUS,若其中位1、3
26、、5有一位是“1”,程序就转至ROUT1;若有二位是“1”,就转向ROUT2;若三位都是“1”,就转向ROUT3;若这三位没有一位是“1”,就转向ROUT4。解:MOV AL, STATUSAND AL, BJZ ROUT4CMP AL,BJZ ROUT3TEST AL, BJZ ROUT1TEST AL, BJZ ROUT1TEST AL, BJZ ROUT1JMP ROUT2HLT4. 23. STRING字符串的最大长度为80个字符,字符串的结束用字符表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格在字符串中的位置(004FH)存入POST单元;若无
27、空格则将1存入POST。解:DATA SEGMENTSTRING DB $LENT EQU $- STRINGPOST DB ?SEARCH: MOV BX, OFFSET STRING MOV DL, 20H MOV POST, 0FFH LOP: MOV AL, BX INC BX CMP AL, $ JZ STP CMP AL, DL JNZ LOPDEC BXMOV POST, BX STP: MOV AH, 4CH INT 21H第5章5. 1. 用下列芯片构成存储系统,各需要多少个RAM芯片?需要多少位地址作为片外地址译码?设系统为20位地址线,采用全译码方式。(1) 5124位R
28、AM构成16KB的存储系统;(2) 10241位RAM构成128KB的存储系统;(3) 2K4位RAM构成64KB的存储系统;(4) 64K1位RAM构成256KB的存储系统;解:1) 需要16KB/5124=64片片外地址译码需11位地址线。2) 需要128KB/1K1=1024片片外地址译码需10位地址线。3) 需要64KB/2K4=64片片外地址译码需9位地址线。4) 需要256KB/64K1位=32片片外地址译码需4位地址线。5. 2. 现有一种存储芯片容量为5124位,若要用它组成4KB的存储容量,需多少这样的存储芯片?每块芯片需多少寻址线?而4KB存储系统最少需多少寻址线?解: 4
29、KB/ 5124b= 16,需要16片 每片芯片需9条寻址线4KB存储系统最少需12条寻址线5. 3. 有2732EPROM芯片的译码电路如图所示,请计算该芯片的地址范围及存储容量。图习 51解: 2732的地址范围为存储容量为4KB。5. 4. 某一存储器系统如图习52所示,回答它们的存储容量各是多少?RAM和EPROM存储器地址分配范围各是多少?解:EPROM的地址范围为FD000HFDFFFH,存储容量为4KB;RAM的地址范围为F9000HF97FFH或F9800HF9FFFH,存储容量为2KB。由于A11未参加译码,因而有地址重叠,一个内存单元有2个地址对应。5. 5. 使用6116
30、、2732和74LS138译码器构成一个存储容量为12KBROM(00000H02FFFH)、8KBRAM(03000H04FFFH)的存储系统。系统地址总线为20位,数据总线为8位。解:5. 6. 8086CPU执行MOV2001H,AX指令从取指到执行指令最少需要多少时间?设时钟频率为5MHZ,该指令的机器码为4个字节,存放在1000H;2000H开始的4个单元中。图习 52解:在无等待周期的情况下,从取指到执行共需:441/5M=3.2s(一个总线周期在无等待周期的情况下由4个时钟周期T组成)。5. 7 图习5-2. 为由2片静态RAM组成的微机系统存储器,此时芯片#1和芯片#2的地址范
31、围和各自的存储总容量。图习5-3解:芯片#1的地址范围为: A19 A14 A13 A12 A11 A0 0 1 0 0 0 1 1 1当A19A14为全“0”时,其地址范围为01000H01FFFH,芯片#2的地址范围为:A19 A14 A13 A12 A11 A10 A0 1 0 0 0 0 1 0 0 1 1当A19A14为全“0”时,其地址范围为02000H027FFH,芯片#1的存储容量4KB;芯片#2为2KB。5. 8. 用二片8K8位的静态RAM芯片6264组成的8位微机系统的存储器电路如图习5-4所示,试计算芯片6264 #1和 #2的地址范围以及存储器的总容量。图习5-4解:
32、 芯片 #1的的地址范围计算:A19 A15 A14 A13 A12 A0 1 0 0 0 1 0 1 1当无关项取“0”时,地址范围为04000H05FFFH芯片 #2的的地址范围计算:A19 A15 A14 A13 A12 A0 0 1 0 0 0 1 1 1当无关项取“0”时,地址范围为02000H03FFFH。该存储器的总容量为16KB。5. 9. 微机系统的存储器由5片RAM芯片组成,如图习5-5所示,其中U1有12 条地址线,8条数据线,U2U5各有10条地址线,4条数据线,试计算芯片U1和U2,U3的地址范围,以及该存储器的总容量。图习5-5解:芯片 U1的的地址范围计算:A19
33、 A14 A13 A12 A11 A10 A0 0 0 0 1 0 0 0 0 0 0 1 1 1 1地址范围为01000H01FFFH芯片 U2和U3的的地址范围计算:A19 A14 A13 A12 A11 A10 A9 A0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1地址范围为02000H023FFH。总容量为6KB(U1为4KB、U2、U3为1KB、U4、U5为1KB)。第6章6. 1. CPU同外设交换的信息有三种类型:数据信息、状态信息和控制信息,请说明CPU是如何通过其三总线(地址总线、数据总线和控制总线)同外设交换这三类信息的?6. 2. 简述查询式数据传送方
34、式的工作过程。6. 3. 简述中断传送方式的工作过程。6. 4. 简述三种DMA传送方式的区别。6. 5. 简述DMA控制器同一般接口芯片的区别。6. 6. 画出查询传送方式输出数据的流程图解:读入状态字 N检查输出设备是否准备好 Y数据口输出数据,控制口输出控制信息6. 7. 通过如图习61的电路,可以把I/O指令寻址结构改为存储器映象I/O端口寻址的结构,试计算该电路结构中,I/O端口和存储器的地址范围。并扼要说明二种I/O端口寻址的区别。图习 61 存储器映象I/O解:I/O端口的地址范围为:F0000HFFFFFH存储器的地址范围为:00000HEFFFFH两者区别见教材P.2146.
35、 8. 图习62为一个LED接口电路,写出使8个LED管自左至右依次发亮2秒的程序,并说明该接口属于何种输入输出控制方式,为什么?图习 62 LED接口解:控制程序为: MOVAL,7FH LOP: OUT20H,AL CALLDELAY2S;调用延时2秒子程序 RORAL,1 JMPLOP 该接口属无条件传送方式,CPU同LED之间无联络信号,且无中断控制逻辑。LED总是已准备好,可以接收来自CPU的信息。6. 9. 简要说明8237A三种基本传送类型的特点。6. 10. 简要说明8237A四种特殊传送类型的特点。6. 11 图习6-4是一个具有中断功能的输入接口电路,当外设数据准备就绪时,
36、发一个READY的正脉冲,向CPU发中断请求,请分析该电路的工作过程。图习6-4解:该电路工作过程如下:当外设准备好数据后,把数据送入数据寄存器U1,同时发出一个READY正脉冲送到中断请求触发器U3,U3的Q为高电平,送与门3。U2为中断允许触发器,在传送数据前,由CPU对U2初始化,即用MOV AL,01H;OUT Y2,AL使U2的D =“1”,则U3的Q端生成的中断请求信号通过与门3向CPU发出中断请求INTR,CPU若满足中断响应条件,转入中断服务程序,在中断服务程序中用IN AL,Y1指令产生负脉冲,使U1(输入数据寄存器)的OE有效,读入外设送入的数据。第7章7. 1. 具有中断
37、屏蔽的接口电路中的“屏蔽”同“屏蔽中断”中的“屏蔽”是否一回事,若不是,有何区别?7. 2. 8086CPU有哪几种中断?7. 3. 简要说明8086中断的特点?7. 4. 简述8086可屏蔽中断的响应过程。7. 5. 简要说明8259A中断控制器中的IRR、ISR和IMR三个寄存器的功能。7. 6. 中断应答时序如图习71所示,说明前后两个INTA周期的任务。图习 71解:从图可见,该中断应答时序是8086在最大方式下的总线时序,在两个INTA周期内, LOCK信号有效(低电平),通知其他CPU不能向当前控制总线的CPU发出总线请求RQ / GT信号,以保证中断响应周期完整地执行。在第一个INTA有效期间,通知8259A,中断请求已被接受;在第二个INTA有效期间,8259A将请求服务的那个设备的中断类型码送上AD7AD0。7. 7. 有8086中断电路如图习72所示,请回答下列问题:(1)根据图中给出