IBM-PC汇编语言程序设计第二版(沈美明)习题参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

IBM_PC汇编语言程序设计习题参考答案.doc-0-作者:喻其山附录:《IBM—PC汇编语言程序设计》习题参考答案第一章*第二章*第三章*第四章*第五章*第六章*第七章*第八章*第九章*第十章*第十一章第一章.习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1)369(2)10000(3)4095(4)32767答:(1)369=101110001B=171H(2)10000=10011100010000B=2710H(3)4095=111111111111B=FFFH(4)32767=111111111111111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1)101101(2)10000000(3)1111111111111111(4)11111111答:(1)101101B=2DH=45(2)10000000B=80H=128(3)1111111111111111B=FFFFH=65535(4)11111111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1)FA(2)5B(3)FFFE(4)1234答:(1)FAH=11111010B=250(2)5BH=1011011B=91(3)FFFEH=1111111111111110B=65534(4)1234H=1001000110100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1)3A+B7(2)1234+AF(3)ABCD-FE(4)7AB×6F答:(1)3A+B7H=F1H=241(2)1234+AFH=12E3H=4835(3)ABCD-FEH=AACFH=43727(4)7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。(1)(-85)+76(2)85+(-76)(3)85-76(4)85-(-76)(5)(-85)-76(6)-85-(-76)答:(1)(-85)+76=10101011B+01001100B=11110111B=0F7H;CF=0;OF=0(2)85+(-76)=01010101B+10110100B=00001001B=09H;CF=1;OF=0(3)85-76=01010101B-01001100B=01010101B+10110100B=00001001B=09H;CF=0;OF=0(4)85-(-76)=01010101B-10110100B=01010101B+01001100B=10100001B=0A1H;CF=0;OF=1(5)(-85)-76=10101011B-01001100B=10101011B+10110100B=01011111B=5FH;CF=0;OF=1(6)-85-(-76)=10101011B-10110100B=10101011B+01001100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1)D8(2)FF答:(1)D8H表示的带符号数为-40,D8H表示的无符号数为216;(2)FFH表示的带符号数为-1,FFH表示的无符号数为255。1.7下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么?(1)4F(2)2B(3)73(4)59答:(1)4FH表示的十进制数为79,4FH表示的字符为O;(2)2BH表示的十进制数为43,2BH表示的字符为+;(3)73H表示的十进制数为115,73H表示的字符为s;(4)59H表示的十进制数为89,59H表示的字符为Y。1.8请写出下列字符串的ASCII码值。Forexample,Thisisanumber3692.IBM_PC汇编语言程序设计习题参考答案.doc-1-作者:喻其山答:46H6FH72H20H65H78H61H6DH70H6CH65H2CH0AH0DH54H68H69H73H20H69H73H20H61H20H6EH75H6DH62H65H72H20H33H36H39H32H2EH0AH0DH第二章.习题2.1在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。试问可直接由指令指定的I/O端口数。答:可直接由指令指定的I/O端口数为256个。2.2有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。答:存储器里的存放情况如右上图所示。2.3在IBMPC机的存储器中存放信息如右下图所示。试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。答:30022H字节单元的内容为ABH;30024H字节单元的内容为EFH。30021H字单元的内容为AB34H;30022H字单元的内容为CDABH。2.4在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?答:3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。2.5如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=2B40H,试问该程序的第一个字的物理地址是多少?答:该程序的第一个字的物理地址是0AAA40H。2.6在实模式下,存储器中每一段最多可有10000H个字节。如果用调试程序DEBUG的r命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、SF、ZF、CF的值。Cdebug-rAX=0000BX=0000CX=0079DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=10E4ES=10F4SS=21F0CS=31FFIP=0100NVUPDIPLNZNAPONC答:此时存储器分段的示意图如右图所示。OF、SF、ZF、CF的值都为0。2.7下列操作可使用那些寄存器?(1)加法和减法数据寄存器等(2)循环计数CX(3)乘法和除法AX、DX,乘数和除数用其他寄存器或存储器(4)保存段地址段寄存器(5)表示运算结果为0ZF=1(6)将要执行的指令地址CS:IP(7)将要从堆栈取出数据的地址SS:SP答:答案见题目的右边。2.8那些寄存器可以用来指示存储器地址?答:BX、BP、SI、DI、堆栈操作时的SP、对应的段地址、386及其后继机型的Exx。2.9请将下列左边的项和右边的解释联系起来(把所选字母放在括号中):(1)CPU(M)A.保存当前栈顶地址的寄存器。(2)存储器(C)B.指示下一条要执行的指令的地址。(3)堆栈(D)C.存储程序、数据等信息的记忆装置,微机有RAM和ROM两种。(4)IP(B)D.以后进先出方式工作的存储空间。34H30021HABH30022HCDH30023HEFH30024H存储器2.3题的信息存放情况12H30020HE5H000B0H1EH000B1H3CH000B3H2AH000B4H存储器2.2题的信息存放情况…000B2H10F4010E4020F4020E4021F0031F0031FF041FF0附加段数据段堆栈段代码段2.6题的存储器分段示意图IBM_PC汇编语言程序设计习题参考答案.doc-2-作者:喻其山(5)SP(A)E.把汇编语言程序翻译成机器语言程序的系统程序。(6)状态标志(L)F.唯一代表存储空间中每个字节单元的地址。(7)控制标志(K)G.能被计算机直接识别的语言。(8)段寄存器(J)H.用指令的助记符、符号地址、标号等符号书写程序的语言。(9)物理地址(F)I.把若干个模块连接起来成为可执行文件的系统程序。(10)汇编语言(H)J.保存各逻辑段的起始地址的寄存器,8086/8088机有四个:CS、DS、SS、ES。(11)机器语言(G)K.控制操作的标志,如DF位。(12)汇编程序(E)L.记录指令操作结果的标志,共6位:OF、SF、ZF、AF、PF、CF。(13)连接程序(I)M.分析、控制并执行指令的部件,由算术逻辑部件ALU和寄存器等组成。(14)指令(O)N.由汇编程序在汇编过程中执行的指令。(15)伪指令(N)O.告诉CPU要执行的操作(一般还要指出操作数地址),在程序运行时执行。答:答案见题目的括号中。第三章.习题3.1给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址(2)直接寻址(3)使用BX的寄存器寻址(4)使用BX的简接寻址(5)使用BX的寄存器相对寻址(6)基址变址寻址(7)相对基址变址寻址答:(1)操作数在指令中,即立即数;(2)EA=D=7237H;(3)无EA,操作数为(BX)=637DH;(4)EA=(BX)=637DH;(5)EA=(BX)+D=0D5B4H;(6)EA=(BX)+(SI)=8E18H;(7)EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。3.2试根据以下要求写出相应的汇编语言指令(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。(2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。(5)把数0B5H与(AL)相加,并把结果送回AL中。答:(1)ADDDX,BX(2)ADDAL,[BX][SI](3)ADD[BX+0B2H],CX(4)ADDWORDPTR[0524H],2A59H(5)ADDAL,0B5H3.3写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址IBM_PC汇编语言程序设计习题参考答案.doc-3-作者:喻其山(3)基址变址寻址答:(1)MOVBX,OFFSETBLOCKADDBX,(6–1)*2MOVDX,[BX](2)MOVBX,OFFSETBLOCK改为:MOVBX,(6-1)*2MOVDX,[BX+(6–1)*2]也可MOVDX,BLOCK[BX](3)MOVBX,OFFSETBLOCKMOVSI,(6–1)*2MOVDX,[BX][SI]3.4现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[1200H](4)MOVAX,[BX](5)MOVAX,1100[BX](6)MOVAX,[BX][SI](7)MOVAX,1100[BX][SI]答:(1)(AX)=1200H(2)(AX)=0100H(3)(AX)=4C2AH(4)(AX)=3412H(5)(AX)=4C2AH(6)(AX)=7856H(7)(AX)=65B7H3.5给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH

1 / 98
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功