- 2022-08-30 发布 |
- 37.5 KB |
- 6页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
微型计算机原理及应用-第四版-课后答案-(郑学坚-朱定华).
……………………………………………………………最新资料推荐………………………………………………… 微机原理第七章答案7.3设AX=1122,BX=3344H,CX=5566H,SS=095BH,SP=0040H,下述程序执行后AX,BX,CX,DX 4个通用寄存器内容是多少?画出堆栈存储器的物理地址及存储内容和SP指向的示意图.PUSH AXPUSHBXPUSH CXPOPBXPOP AXPOP DX参考答案:(BX)=5566H,(AX)=3344H,(DX)=1122H,(CX)=5566H11H22H33H44H55H66H 堆栈段物理地址=SS*16(左移4位)+SP095EBH095ECH095FDH095EEH095EFHSP→095F0H7.4设 SP=0040H,如果用进栈指令存入5个数据,则SP=0036H,若用出栈指令取出两个数据,则SP=003AH 。7.5将表中程序段各指令执行后AX的值用十六进制数填入表中参考答案:程序段AX程序段AX6/6\n……………………………………………………………最新资料推荐…………………………………………………MOVAX,00ORAX,3FDFHBFDFHDECAXFFFFHANDAX,0EBEDHABCDHADDAX,7FFFH7FFEHXCHGAH,ALCDABHADCAX,18000HSALAX,19B56HNEGAX8000HRCLAX,136ADH7.6用十六进制数填下表,已知DS=1000H,ES=2000H,SS=0FC0H,通用寄存器的值为0。参考答案:逻辑地址=段基址:段内偏移地址 BP以SS为默认段基址,其余寄存器以DS为默认段基址 ES:为段前缀,以ES为段基址指令存储器操作数逻辑地址SUB[BP],AL0FC0H:0000HMOV[BX],BH1000H:0000HMOV [DI],DL1000H:0000HMOV ES:[SI],BL2000H:0000HADD500H[BP],AH0FC0H:0500HSUB [SI—300H],AL1000H:FD00HMOV 1000H[DI],DL1000H:1000HMOV [BX—8],CL1000H:FFF8HMOVES:1000H[DI],CH2000H:1000HMOV [BP+SI],DH0FC0H:0000HMOV[BX+DI],DL1000H:0000H7.7试给出执行完下列指令后OF、SF、ZF、CF4个可测试标志位的状态(用十六进制给出FLAG的值,其余各位为0)(1)MOVAX,2345H (2)MOVBX,5439HADD AX,3219H ADDBX,456AH(3)MOVCX,3579H (4)MOVDX,9D82HSUB CX,4EC1H SUB DX,4B5FHOFDFIFTFSFZF0AF0PF0CF溢出方向中断陷阱符号为零辅进奇偶进位参考答案:(这里除了上面4个标志还考虑了奇偶标志PF和辅助进位标志AF)(1)AX=555EHFLAG=0000H6/6\n……………………………………………………………最新资料推荐…………………………………………………OFDFIFTFSFZF0AF0PF0CF0000000000000000(2)BX=99A3HFLAG=0894HOFDFIFTFSFZF0AF0PF0CF0000100010010100(3)CX=E6B8 FLAG=0081HOFDFIFTFSFZF0AF0PF0CF0000000010000001(4)DX=5223 FLAG=0014HOFDFIFTFSFZFAFPF0CF00000000000101007。8AX中有一负数,欲求其绝对值,若该数为补码,则使用指令NEGAX ;若为原码则用指令AND AX,7FFFH。 .7。9分别写出实现如下功能的程序段:(1)将AX中间8位(做高8位),BX低4位和DX高4位(做低4位)拼成一个新字。(注意:左移右移操作)ANDAX,0FF0HMOVCL,04HSHL AX,CLANDBL,0FHAND DH,0F0HSHR DH,CLSHLBL,CLORAL,DHORAL,BL(2)将CX中间8位取反,其余位不变XORCX,0FF0H(3)将数据段以BX为偏移地址的连续3单元中的无符号数求和。MOVCX,3MOVAL,0LAB:ADDAL,[BX] ADCAH,00H;(注意字节单元的和可能超过一个字节,故这里和扩展至AH)INCBXLOOPLAB(4)将数据段中以BX为偏移地址的连续4单元中的内容颠倒过来MOVCX,2;(4/2单元个数除2,循环计数)6/6\n……………………………………………………………最新资料推荐…………………………………………………MOVSI,BX ADDSI,3;(指向最后一个数据单元,首地址+单元个数-1)LAB:MOVAL,[BX]XCHGAL,[SI] MOV[BX],AL INCBX DEC SI LOOPLAB(5)将BX中的4位压缩BCD数用非压缩数形式按序放在AL,BL,CL和DL中MOVCL,4(注意先后次序,不能用其它寄存器)MOVDL,BL ANDDL,0FH MOVAL,BH SHRAL,CL XCHGBH,BL ANDBL,0FH SHRBH,CL MOVCL,BH(6)不用乘法指令实现AL(无符号数)乘以20AL*(24+22)( 24左移4位,22左移2位) MOVAH,0MOV CL,2 SAL AX,CL;进行乘4操作 MOV BX,AX ;保留乘4中间结果SALAX,CL;再移2次,相当于乘16 ADDAX,BX7。10一段数据定义为:DATA SEGMENTS1 DB0,1,2,3,4,5S2 DB ‘12345'COUNT=$—S1NBDB3DUP(2)NWDW 120,-256PDW—1DATA ENDS(1)画出该数据段数据存储形式(注意:符号常量COUNT不分配存储单元)地址内容S1 -0000H00H 0001H01H0002H02H0003H03H6/6\n……………………………………………………………最新资料推荐…………………………………………………0004H04H0005H05HS2—0006H31H0007H32H 0008H33H0009H34H 000AH35HNB —000BH02H 000CH02H 000DH02HNW -000EH78H 000FH00H 0010HAAH 0011HFDHP -0012HFFH 0013HFFH(2)在下表中填写各变量的偏移地址和各变量的值变量名偏移地址变量值变量名偏移地址变量值S10000H00HNW000EH0078HS20006H31HP0012HFFFFHNB000BH02H(3)填写表中程序段各指令执行后。目的寄存器的值,并指出源操作数所使用的寻址方式(注意:COUNT是符号常量是立即数)程序段目的寄存器的值源操作数的寻址方式MOVBX,OFFSETS1+30003H立即寻址MOVSI,OFFSETS20006H立即寻址MOVCL,COUNT000BH立即寻址MOV BP,NW+2FDAAH直接寻址MOVDX,WORDPTRNB0202H直接寻址MOVAL,[SI+3]34H变址寻址MOVAH,[SI+BX+1]35H基址变址寻址MOVCH,BYTEPTRNW+3FDH直接寻址(4)改正下列不正确的指令错误6/6\n……………………………………………………………最新资料推荐…………………………………………………a。 MOVAX,S1 改正 MOV AX,WORD PTRS1b。MOVBP,OFFSETS2改正MOVBX,OFFSET S2MOV CL,[BP] MOVCL,[BX]c。MOVSI,OFFSET NB改正MOV SI,OFFSETNBMOV [SI],‘+'MOVBYTEPTR [SI],‘+’d。MOVDL,NW+2改正MOVDL,BYTEPTR NW+2e。MOVDI,CH 改正MOVDI,CXf.MOVBX,OFFSETS1改正MOVBX,OFFSETS1 MOVDH,BX+3 MOV DH,[BX+3]g. INC COUNT 改正 MOV BX,COUNT INCBX(符号常数不能加1)h. MOV NB,S2改正 MOVAL,S2 MOVNB,AL(两个内存变量不能直接传送)i.MOVAX,[BX+S1] 改正MOVAX,WORD PTR[BX+S1]j.ADD AX,[DX+NW]改正 ADDAX,[BX+NW]6/6查看更多