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
2、解:(1) 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,(12
3、6A5H)16H,(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(
4、11352H) ,(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;
5、SF=ZF=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值。各指令左
6、首的16进制编码是该指令的机器码。指令中的目的地址用相应的标号表示。(1) EBE7 JMP SHORT AGAIN(2) E90016 JMP NEAR PTR OTHER(3) E3 JMP BX(4) FF67 JMP WORD PTR 0072HBX(5) FFEB JMP 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. 阅读分
8、析下列指令序列ADD 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 BRCH
9、2RCL AL,1INC 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. D1 DB 20H DUP(?)D2 DW D1请写出用一条指令实现取D1的偏移地址SI中的三种方法。解:(1
10、) MOV SI, OFFSET DI(2) MOV SI, D2(3) LEA SI, DI3. 9. 程序段1 程序段2MOV AX,147BH MOV AX,99D8HMOV BX,80DCH MOV BX,9847HADD AX,BX SUB AX,BXJNO L1 JNC L3JNC L2 JNO L4上述两个程序段执行后,分别转移到哪里?解:(1) 转向L1(2) 转向L33. 10. MOV BX,0FFH AND BX,0FFFH OR BX,0F0FH XORBX,00FFH上述程序段运行后,BX ,CF 解:BX=0F00H; CF=03. 11. CMP AX,BX JG
11、E NEXT XCHG AX,BXNEXT: CMP AX,CXJGE DONEXCHG AX,CXDONE: 试回答:(1) 上述程序段执行后,原有AX,BX,CX中最大数存放在哪个寄存器中?(2) 这三个数是带符号数还是无符号数?解:AX ; 带符号数第4章4.1 画出下列语句中的数据在存储器中的存储情况。ARRAYB DB 63,63H,ABCD,3DUP(?),2 DUP(1,3)ARRAYW DW 1234H,5,AB,CD,?,2DUP(1,3)解: 地址数据地址数据ARRAYB3FH42H63H41H41H44H42H43H43H ?44H ? ?01H ?00H ?03H01H
12、00H03H01H01H00H03H03H34H00H12H05H00H4. 2. 程序中数据定义如下:DATA1 DW ?DATA2 DB 32DUP(?)DATA3 DD ?DLENGTH EQU DATA1此时DLENGTH的值是多少?解:DLENGTH=38=26H4. 3. 程序中数据定义如下:ARRAY DB ABCDEFRESULT DB ?TABLE DW 20 DUP(?)则执行指令 MOV AX,TYPE RESULT后,AX?MOV BX,TYPE TABLE后,BX?MOV CX,LENGTH TABLE后,CX?MOV DX,LENGTH ARRAY后,DX?MOV
13、SI,SIZE TABLE后,SI?MOV DI,SIZE ARRAY后,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.
14、 设已知语句为:ORG 0024HDATA1 DW 4,12H,+4则执行指令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为首字节的
15、连接存储单元中存放20H个重复的数据序列:2,3, 10 个4,一个7。(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(低位)中。试把程序段
16、中所空缺的指令填上。XOR BX,BXLOP: MOV AH,01H ;键盘字符输入INT 21HMOV AH,BHADD AL,BLMOV BX,AX解:MOV CX, 10AAA4. 11. 下面程序段的功能是把DA1数据区的数09转换为对应的ASCII码。试完善本程序段。DA1 DB OOH,O1H,02H,03H,04H,05H,06H,07H,08H,09HASCI DB 10 DUP(?)CUNTASCI-DA1LEA SI,DA1LEA DI,ADCILOP1: MOY AL,SIMOVDI,ALINC SIINC DILOOP LOP1解:MOV CX, COUTADD AL,
17、 30H4. 12. BUFFABDQCAXYZCONT EQU -BUFFCLDLEA DI,BUFFMOV CX,CONTMOV AL,XOR DX,DXNEXT: REPNZ SCA,SBCMP CX,0JZ K1INC DXJMP NEXTK1: 上述程序段运行后,DX中的值表示的意义是什么?解:DX中为$个数4. 13. 设A,B是长度为10的字节数组,用串操作指令编写程序实现AB两数组内容的相互交换,试完善本程序。DATA SEGMENTA DB1,2,3,4,5,6,7,8,9,0AHDRG OO10HB DB 0AH,9,8,7,6,5,4,3,2,1DATA ENDSLEA
18、SI,ALEA DO,BMOV CX,10LOP: LODSBXCHG AL,DIDEC DISTOSBINC DILOOP LOP解:XCHG SI, DIXCHG SI, DI4. 14. 现有一子程序:SUB1 PROCTEST AL,80HJE PLUSTEST BL,80HJNE EXITOJMP XCHANGEPLUS: TEST BL,80HJE EITOXCHANGE: XCHG AL,BLEWITO: RETSUB1 ENDP试回答:(1) 子程序的功能是什么?(2) 如调用子程序前AL9AH,BL77H,那么返回主程序时,AL?BL?解:(1) 测试AL, BL两数的符号,
19、如为同号直接返回,如为异号,则AL与BL交换(2) AL=77H, BL=9AH4. 15. 编写一程序段,将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两变量(字节单元),
20、试编写程序段计算(只写有关程序功能的指令):X 当X0时Y|X| 当X0时解:MOV AL, X CMP AL, 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 MO
21、V SUM, AX4. 19. 编写一个完整的源程序,将BUF字节单元存放的两位BCD码,转换成2个字节的ASCII码,并分别存放在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 A
22、L, BUF AND AL, 0F0H MOV CL, 4 SHR AL, CL OR AL, 30H MOV ASC, AL MOV AL, BUF AND AL, 0FH OR AL, 30HMOV ASC+1, ALMOV AL, 4CHINT 21H CODE ENDSEND START4. 20. 在A1单元开始定义了一长度为N的字符串,找出其中所有的小写字母并存放到以A2开始的存储区中。统计出小写字母的个数,存放到SL单元中。请编一完整的源程序。数据段如下:DATA SEGMENTA1 DBN EQU A1A2 DB N DUP(?)SL DB ?DATA ENDS解:DATA S
23、EGMENTA1 DB N EQU $-A1A2 DB N DUP (?)SL DB ?DATA ENDS STACK SEGMENT 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 DIEX
24、IT: INC SI LOOP AGAIN MOV SL, BL MOV AH, 4CH INT 21H CODE ENDS END START4. 21. 设在DAT单元存放一个-9+9的字节数据,在SQRTAB数据区中存放09的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。并写出主程序的调用方式。数据段如下:DATA SEGMENTDAT DB XXHSQRTAB DB 0,1,4,9,7781SQR DB ?DATA ENDS解:DATA SEGMENTDAT DB XXH SQRTAB DB 0,1,4,9, ,81SQR DB
25、?DATA ENDSSTACK1 SEGMENT PARA STACK DB 20H DUP (0)STACK1 ENDSCODE SEGMENT 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 RETSU
26、BROT ENDSCODE ENDS END START4. 22. 编写能完成下列要求的程序:测试字节数据STATUS,若其中位1、3、5有一位是“1”,程序就转至ROUT1;若有二位是“1”,就转向ROUT2;若三位都是“1”,就转向ROUT3;若这三位没有一位是“1”,就转向ROUT4。解:MOV AL, STATUSAND AL, 00101010BJZ ROUT4CMP AL,00101010BJZ ROUT3TEST AL, 00001010BJZ ROUT1TEST AL, 00101000BJZ ROUT1TEST AL, 00100010BJZ ROUT1JMP ROUT2H
27、LT4. 23. STRING字符串的最大长度为80个字符,字符串的结束用字符表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格在字符串中的位置(004FH)存入POST单元;若无空格则将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位RAM构成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位地址线。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1