1、微型计算机的原理及的应用第四版课后答案详解郑学坚朱定华 微机原理第七章答案7.3 设AX=1122,BX=3344H,CX=5566H,SS=095BH,SP=0040H,下述程序执行后AX,BX,CX,DX 4个通用寄存器内容是多少?画出堆栈存储器的物理地址及存储内容和SP指向的示意图。PUSH AXPUSH BXPUSH CXPOP BXPOP AXPOP DX参考答案:(BX)=5566H, (AX)=3344H, (DX)=1122H,(CX)=5566H 堆栈段物理地址=SS*16(左移4位)+SP7.4 设 SP=0040H,如果用进栈指令存入5个数据,则SP=0036H ,若用出
2、栈指令取出两个数据,则SP=003AH 。7.5将表中程序段各指令执行后AX的值用十六进制数填入表中参考答案:程序段AX程序段AXMOV AX,00OR AX,3FDFHBFDFHDEC AXFFFFHAND AX,0EBEDHABCDHADD AX,7FFFH7FFEHXCHG AH,ALCDABHADC AX,18000HSAL AX,19B56HNEG AX8000HRCL AX,136ADH7.6 用十六进制数填下表,已知DS=1000H,ES=2000H,SS=0FC0H,通用寄存器的值为0。参考答案:逻辑地址=段基址:段内偏移地址 BP以SS为默认段基址,其余寄存器以DS为默认段基
3、址 ES:为段前缀,以ES为段基址指令存储器操作数逻辑地址SUB BP,AL0FC0H:0000HMOV BX,BH1000H:0000HMOV DI,DL1000H:0000HMOV ES:SI,BL2000H:0000HADD 500HBP,AH0FC0H:0500HSUB SI-300H,AL1000H:FD00HMOV 1000HDI,DL1000H:1000HMOV BX-8,CL1000H:FFF8HMOV ES:1000HDI,CH2000H:1000HMOV BP+SI,DH0FC0H:0000HMOV BX+DI,DL1000H:0000H7.7 试给出执行完下列指令后OF、
4、SF、ZF、CF4个可测试标志位的状态(用十六进制给出FLAG的值,其余各位为0)(1)MOV AX,2345H (2) MOV BX,5439H ADD AX,3219H ADD BX,456AH(3)MOV CX,3579H (4) MOV DX,9D82H SUB CX,4EC1H SUB DX,4B5FHOFDFIFTFSFZF0AF0PF0CF溢出方向中断陷阱符号为零辅进奇偶进位 参考答案:(这里除了上面4个标志还考虑了奇偶标志PF和辅助进位标志AF)(1)AX=555EH FLAG=0000HOFDFIFTFSFZF0AF0PF0CF0000000000000000(2)BX=99
5、A3H FLAG=0894HOFDFIFTFSFZF0AF0PF0CF0000100010010100(3)CX=E6B8 FLAG=0081HOFDFIFTFSFZF0AF0PF0CF0000000010000001(4)DX=5223 FLAG=0014HOFDFIFTFSFZFAFPF0CF0000000000010100 7.8 AX 中有一负数,欲求其绝对值,若该数为补码,则使用指令 NEG AX ;若为原码则用指令AND AX,7FFFH。 。 7.9 分别写出实现如下功能的程序段:(1)将AX中间8位(做高8位),BX低4位和DX高4位(做低4位)拼成一个新字。(注意:左移右移操
6、作)AND AX,0FF0HMOV CL,04HSHL AX,CLAND BL,0FHAND DH,0F0HSHR DH,CLSHL BL,CLOR AL,DHOR AL,BL(2)将CX中间8位取反,其余位不变 XOR CX,0FF0H(3)将数据段以BX为偏移地址的连续3单元中的无符号数求和。MOV CX,3MOV AL,0LAB:ADD AL,BX ADC AH,00H;(注意字节单元的和可能超过一个字节,故这里和扩展至AH)INC BXLOOP LAB(4) 将数据段中以BX为偏移地址的连续4单元中的内容颠倒过来MOV CX,2 ;(4/2单元个数除2,循环计数)MOV SI,BX A
7、DD SI,3 ;(指向最后一个数据单元,首地址+单元个数-1)LAB:MOV AL,BXXCHG AL,SI MOV BX,AL INC BX DEC SI LOOP LAB(5) 将BX中的4位压缩BCD数用非压缩数形式按序放在AL,BL,CL和DL中 MOV CL,4 (注意先后次序,不能用其它寄存器) MOV DL,BL AND DL,0FH MOV AL,BH SHR AL,CL XCHG BH,BL AND BL,0FH SHR BH,CL MOV CL,BH(6) 不用乘法指令实现AL(无符号数)乘以20AL*(24+22)( 24左移4位,22左移2位) MOV AH,0MOV
8、 CL,2 SAL AX,CL ;进行乘4操作 MOV BX,AX ;保留乘4中间结果 SAL AX,CL;再移2次,相当于乘16 ADD AX,BX7.10 一段数据定义为:DATA SEGMENTS1 DB 0,1,2,3,4,5S2 DB 12345COUNT=$-S1NB DB 3DUP(2)NW DW 120,-256P DW -1DATA ENDS(1)画出该数据段数据存储形式(注意:符号常量COUNT不分配存储单元)地址内容S1 -0000H00H 0001H01H0002H02H0003H03H0004H04H0005H05HS2 -0006H31H 0007H32H 0008
9、H33H 0009H34H 000AH35HNB -000BH02H 000CH02H 000DH02HNW -000EH78H 000FH00H 0010HAAH 0011HFDHP -0012HFFH 0013HFFH(2)在下表中填写各变量的偏移地址和各变量的值变量名偏移地址变量值变量名偏移地址变量值S10000H00HNW000EH0078HS20006H31HP0012HFFFFHNB000BH02H(3) 填写表中程序段各指令执行后。目的寄存器的值,并指出源操作数所使用的寻址方式(注意:COUNT是符号常量是立即数)程序段目的寄存器的值源操作数的寻址方式MOV BX,OFFSET
10、S1+30003H立即寻址MOV SI,OFFSET S20006H立即寻址MOV CL,COUNT000BH立即寻址MOV BP,NW+2FDAAH直接寻址MOV DX,WORD PTR NB0202H直接寻址MOV AL,SI+334H变址寻址MOV AH,SI+BX+135H基址变址寻址MOV CH,BYTE PTR NW+3FDH直接寻址(4)改正下列不正确的指令错误a. MOV AX,S1 改正 MOV AX,WORD PTR S1b. MOV BP,OFFSET S2 改正 MOV BX,OFFSET S2 MOV CL,BP MOV CL,BXc. MOV SI,OFFSET N
11、B 改正 MOV SI,OFFSET NB MOV SI,+ MOV BYTE PTR SI,+ d. MOV DL,NW+2 改正 MOV DL, BYTE PTR NW+2e. MOV DI,CH 改正 MOV DI,CXf. MOV BX, OFFSET S1 改正 MOV BX, OFFSET S1 MOV DH,BX+3 MOV DH,BX+3g. INC COUNT 改正 MOV BX,COUNT INC BX (符号常数不能加1)h. MOV NB,S2 改正 MOV AL,S2 MOV NB,AL(两个内存变量不能直接传送)i. MOV AX,BX+S1 改正 MOV AX,WORD PTR BX+S1 j. ADD AX,DX+NW 改正 ADD AX,BX+NW
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1