《微型计算机原理及应用第四版课后答案郑学坚朱定华.docx》由会员分享,可在线阅读,更多相关《微型计算机原理及应用第四版课后答案郑学坚朱定华.docx(9页珍藏版)》请在课桌文档上搜索。
1、微机原理第七章答案7.3设AX=I122,BX=3344H,CX=5566H,SS=095BH,SP=OO1.OH,下述程序执行后AX,BX,CX,DX4个通用寄存器内容是多少?画出堆栈存储器的物理地址及存储内容和SP指向的示意图。PUSHAXPUSHBXPUSHCXPOPBXPOPAXPOPDX参考答案:(BX)=5566H,(AX)=3344H,(DX)=1122H,(CX)=5566H堆栈段物理地址=SS*16(左移4位)+SPunnccruCCUnnri?imiAAU八U1.MIOQUACD11IIrn.nc11i7.4设SP=OO40H,假如用进栈指令存入5个数;OOU1IU1UVJ
2、Di1.,若用出栈指令取出两个数据,则SP=OO3AH7. 5将表中程序段各指令执行后AX的值用十六进制数填入表中参考答案:程序段AX程序段AXMOVAX,00ORAX,3FDFHBFDFHDECAXFFFFHANDAX,OEBEDHABCDHADDAX,7FFFH7FFEHXCHGAH,A1.CDABHADCAX,18000HSA1.AX,19B56HNEGAX8000HRC1.AXtI36ADH7.6用十六进制数填下表,已知DS=100OH,ES=2000H,SS=OI-COII,通用寄存器的值为0。参考答案:逻辑地址=段基址:段内偏移地址BP以SS为默认段基址,其余寄存器以DS为默认段基
3、址ES:为段前缎,以ES为段基址指令存储器操作数逻辑地址SUBBP,1.OFCOH:0000HMOVBX,BH1000H:0000HMOVD1,D1.1000H:0000HMOVES:SI,B1.2000H:0000HADD500HBP,HOFCOH:0500HSUBSI-300H,A1.1000H:FDOOHMOV1000HDI,D1.1000H:1000HMOVBX-8,C1.1000H:FFF8HMOVES:1000HDI,CH2000H:1000HMOVBP+SI,DHOFCOH:0000HMOVBX+DI,D1.1000H:0000H7.7 试给出执行完下列指令后OF、SF、ZF、C
4、F4个可测试标记位的状态(用十六进制给出F1.AG的值,其余各位为0)(I)MOVX,2345H(2) MOVBX,5439HADDX,3219HADDBX,456H(3) MOVCX,3579U(4) MOVDX,9D82HSUBCX,4EC1HSUBDX,4B5FHOFDFIFTF溢出方向中断陷阱SFZF0AF0PF0CF符号为零辅进奇偶进位参考答案:(这里除了上面4个标记还考虑了奇偶标记PF和协助进位标记AF)(1)AX=555EHF1.AG=OOOOHOF!)!IFTFSFZF0AF0PF0CF0000000000000000(2)BX=99A3HF1.AG=0894HOFD1.-IF
5、TFSFZF0AF0PF0CF0000100010010100(3)CX=E6B8F1.AG=0081HOFDFIFTFSFZF0AF0PF0CF0000000010000001(4)DX=5223F1.AG=0014H01DFIFTFSFZEAFPF0CF00000000000101007.8 AX中有一负数,欲求其肯定值,若该数为补码,则运用指令NEG色;若为原码则用指令ANDAX,TFFF。7.9 分别写出实现如下功能的程序段:(1)将AX中间8位(做高8位),BX低4位和DX高4位(做低4位)拼成一个新字。(留意:左移右移操作)ANDAX,OFFOHMOVC1.,04HSH1.AX,C
6、1.ANDB1.,OFHANDDH,OFOHSHRDH,C1.SH1.B1.1C1.ORA1.,DHORA1.,B1.(2)将CX中间8位取反,其余位不变XORCX,OFFOH(3)将数据段以BX为偏移地址的连续3单元中的无符号数求和。MOVCX,3MOVA1.,01.AB:ADDA1.,BXADCAH,OOH5(留意字节单元的和可能超过一个字节,故这里和扩展至AH)INCBX1.OOP1.AB(4)将数据段中以BX为偏移地址的连续4单元中的内容颠倒过来MOVCX,2;(4/2单元个数除2,循环计数)MOVSI,BXADDS1.3I(指向最终一个数据单元,首地址+单元个数-1)1.AB:MOV
7、A1.,BXXCHGA1.,SIMOVBX,A1.INCBXDECSI1.OOP1.AB(5)将BX中的4位压缩BCD数用非压缩数形式按序放在A1.,B1.,C1.和D1.中MOVC1.,4(留意先后次序,不能用其它寄存器).MOVD1.,B1.ANDD1.,OFH.MOVA1.,BHSHRA1.,C1.,XCHGBH,B1.ANDB1.,OFH,SHRBH,C1.MOVC1.,BH(6)不用乘法指令实现A1.(无符号数)乘以201.*(24+22)(2左移4位,21左移2位)MOVAH,0MOVC1.,2SA1.AX,C1.I进行乘4操作MOVBX,AX;保留乘4中间结果SA1.AX,C1.
8、;再移2次,相当于乘16,ADDAX,BX7.10 一段数据定义为:DATASEGMENTS1.DB0,1,2,3,4,5S2DB12345COUNT=S-S1.NBDB3DUP(2)WDW120,-256PDW-1DATAENDS(1)画出该数据段数据存储形式(留意:符号常量COUNT不安排存储单元)地址内容S1.-OOOOHOOHOOO1.HO1.H0002H02H0003H03H0004H04H0005H05HS2-0006H31H0007H32H0008H33H0009H34HOOOAH35HNB-OOOBH02HOOOCH02HOOODH02HNW-OOOEH78HOOOH1.OOH
9、OO1.OHAAHOO1.1.HFDHP-0012HFFH0013HFFH(2)在下表中填写各变量的偏移地址和各变量的值变量名偏移地址变量值变量名偏移地址变量值S1.OOOOHOOHNWOOOEH0078HS20006H31HP0012HFFFFHNBOOOBH02H(3)填写表中程序段各指令执行后。目的寄存器的值,并指出源操作数所运用的寻址方式(留意:CouNT是符号常量是马上数)程序段目的寄存器的值源操作数的寻址方式MOVBX,OFFSETS1.+30003H马上寻址MOVSI,OFFSETS20006H马上寻址MOVC1.,COUNTOOOBH马上寻址MOVBP,NW+2FDAAH干脆寻
10、址MOVDX,WORDPTRNB0202H干脆寻址MOVA1.,SI+334H变址寻址MOVAH,SI+BX+135H基址变址寻址MOVCH,BYTEPTRNW+3FDH干脆寻址(4)改正下列不正确的指令错误a. MOVX,S1b. MOVBP,OFFSETS2MOVC1.1BPc. MOVSIiOFFSETNBMOVSI,,+d. MOVD1.,NW+2e. MOVDI,CHf. MOVBX,OFESETS1.MOVDH,BX+3改正MOVAX,WORDPTRS1.改正MOVBXtOFFSETS2MOVC1.,BX改正MOVSI,OFFSETNBMOVBYTEPTRSI,+改正MOVD1.,B11EPTRNW+2改正MOVDI,CX改正MOVBX,OFFSETS1.MOVDH,BX+3g. Inccount改正不能加Dh. MOVNB,S2改正量不能干脆传送)i. MOVAX,BX+S1改正j. ADDX,DX+W改正MOVBX,COUNTINCBX(符号常数MOVA1.,S2MOVNB,A1.(两个内存变MOVAX,WORDPTRBX+S1ADDAX,BX+NW