资源描述:
《汇编语言程序设计习题解答》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计习题解答请打开书P176习题4.1画出下列语句的数据在存储器中的存储情况:ARRAYBDB63,63H,’ABCD’,3DUP(?),2DUP(1,3)ARRAYWDW1234H,5,’AB’,’CD’,?,2DUP(1,3)3FH63H41H42H43H44HXXXXXX01H03H01H03H34H12H05H00H42H41H44H43HXXXX01H00H03H00H01H00H03H00H习题4.2程序中数据定义如下:DATA1DW?DATA2DB32DUP(?)DA
2、TA3DD?DLENGTHEQU$-DATA1此时DLENGTH的值是多少?解答:DLENGTH=2(字)+32+4(双字)=38习题4.3程序中数据定义如下:ARRAYDB‘ABCDEF’RESULTDB?TABLEDW20DUP(?)则执行指令MOVAX,TYPERESULT后,AX=1MOVBX,TYPETABLE后,BX=2MOVCX,LENGTHTABLE后,CX=20MOVDX,LENGTHARRAY后,DX=1MOVSI,SIZETABLE后,SI=2×20=40MOVDI,SIZEARRA
3、Y后,DI=1习题4.4指令ANDAX,7315HAND0FFH中,两个AND有什么差别?这两个AND操作分别在什么时候执行?解答:(1)指令ANDAX,7315HAND0FFH中的第一个AND是指令系统中的逻辑“与”指令,而第二个AND是表达式中的表示逻辑“与”关系的。(2)指令ANDAX,7315HAND0FFH中的第一个AND是在CPU执行指令操作时才会执行。而第二个AND是在汇编时就会将7315H和0FFH作逻辑“与”运算,得到结果0015H。然后执行第一个AND指令,完成AX的内容与0015H的
4、逻辑“与”运算。习题4.5设BX=1034H,则执行下列指令:MOVAX,BXAND0FFHMOVCX,BXEQ1234H后,AX和CX各多少?若BX=1234H,则结果如何?解答(1)BXAND0FFH=0034H(2)0034H→AX=0034H(3)BXEQ1234H=0000H(4)0000H→CX=0000H结果:AX=0034H;CX=0000H若BX=1234H,则结果:AX=0034H;CX=FFFFH习题4.6设已知语句为:ORG0024HDATA1DW4,12H,$+4(0028H+0
5、4H=002CH)则执行指令MOVAX,DATA1+4后AX的值是多少?解答:(1)DATA1+4=0024H+04H=0028H(2)[0028H]=002CH→AX=002CH0024H04H0025H00H0026H12H0027H00H0028H2CH0029H00H习题4.7已知数据定义语句为:BUFFERDB16DUP(0,2DUP(1))则其中字数据单元内容为0100H的单元数是多少?解答:字数据单元内容为0100H的单元数是16个00H01H01H00H01H01H…00H01H01H00
6、H01H01H16DUP16组16组习题4.8要在以DA1为首地址的数据区中依次存放下列数据;‘A’,‘B’,0,0,’C’,’D’,0,0请分别用DB,DW和DD语句实现。解答:(1)DA1DB‘A’,‘B’,0,0,’C’,’D’,0,0(2)DA1DW‘BA’,0,’DC’,0(3)DA1DD‘BA’,’DC’习题4.9试按下列要求在数据段中依次书写各数据定义语句:(1)以DA1为首字节的连续存储单元中存放20H个重复的数据序列:2,3,10个4,一个7。(2)DA2为字符串变量,用字变量(DW)设
7、置一字符串;‘STUDENTS’(按次顺序存放在各单元中)。(3)用等值语句给符号COUNT赋值以DA1为首地址的数据区共占有的字节数,此等值语句必须放在最后一语句。解答:(1)DA1DB20HDUP(2,3,10DUP(4),7)(2)DA2DW‘TS’,‘DU’,‘NE’,’ST’,(3)COUNTEQUDA2-DA1习题4.10下面程序段是实现从键盘输入十个一位10进制数后累加,最后累加和以非压缩BCD码形式存放在AH(高位)和AL(低位)中。试把程序段中所空缺的指令填上。XORBX,BX;BX清零
8、MOVCX,10;传送数据长度LOP:MOVAH,01H;中断INT21H的01H号调用INT21H;中断调用P172,键入值送入AL中MOVAH,BH;将BH的内容传AHADDAL,BL;BL与AL的值相加,结果在AL中AAA;非压缩BCD码加法调整MOVBX,AX;累加结果送BXLOOPLOP;CX-1→CX,判断CX≠0,则转习题4.11下面程序段的功能是把DA1数据区的0-9转换为对应的ASCⅡ码.DA1DB00H,0