第3章 习题解答2.ppt
第第3章章 汇编语言程序设计习题汇编语言程序设计习题解答解答请打开书请打开书P188习题习题3.8画出下列语句的数据在存储器中的存储情况画出下列语句的数据在存储器中的存储情况:ARRAYB DB 63,63H,ABCD,3 DUP(?),2 DUP(1,3)ARRAYW DW 1234H,5,AB,CD,?,2 DUP(1,3)3FH63H41H42H43H44HXXXXXX01H03H01H03H34H12H05H00H42H41H44H43HXXXX01H00H03H00H01H00H03H00H习题习题3.9程序中数据定义如下:程序中数据定义如下:DATA1 DW?DATA2 DB 32 DUP(?)(?)DATA3 DD?DLENGTH EQU$-DATA1此时此时DLENGTH的值是的值是多少?多少?解答:解答:DLENGTH=2(字)字)+32+4(双字)(双字)=38习题习题3.10程序中数据定义如下:程序中数据定义如下:ARRAY DB ABCDEFRESULT DB?TABLE DW 20 DUP(?)(?)则则执行指令执行指令MOV AX,TYPE RESULT后,后,AX=1MOV BX,TYPE TABLE后,后,BX=2MOV CX,LENGTH TABLE后,后,CX=20MOV DX,LENGTH ARRAY后,后,DX=1MOV SI ,SIZE TABLE后,后,SI=220=40 MOV DI ,SIZE ARRAY后,后,DI=1习题习题3.11试按试按下列要求在数据段中依次书写各数据定义语句:下列要求在数据段中依次书写各数据定义语句:(1)以)以DA1为首字节的连续存储单元中存放为首字节的连续存储单元中存放20H个重个重复的数据序列:复的数据序列:2,3,10个个4,一个,一个7。(2)DA2为字符串变量,用字变量(为字符串变量,用字变量(DW)设置一字设置一字符串;符串;STUDENTS(按次顺序存放在各单元中)。按次顺序存放在各单元中)。(3)用等值语句给符号)用等值语句给符号COUNT赋值以赋值以DA1为首地址为首地址的数据区共占有的字节数,此等值语句必须放在最的数据区共占有的字节数,此等值语句必须放在最后一语句。后一语句。解答:解答:(1)DA1 DB 20H DUP(2,3,10 DUP(4),),7)(2)DA2 DW TS,DU,NE,ST,(3)COUNT EQU$-DA1习题习题3.12下面程序段是实现从键盘输入十个一位下面程序段是实现从键盘输入十个一位10进制数后进制数后累加,最后累加和以非压缩累加,最后累加和以非压缩BCD码形式存放在码形式存放在AH(高位)高位)和和AL(低位)中。试把程序段中所空低位)中。试把程序段中所空缺的指令填上。缺的指令填上。XOR BX,BX ;BX清零清零MOV CX,10 ;传送数据长度传送数据长度LOP:MOV AH,01H;中断中断INT 21H的的01H号调用号调用INT 21H ;中断调用中断调用P184,输入的在输入的在AL中中MOV AH,BH;将将BH的的内容传内容传AHADD AL,BL ;BL与与AL的值相加的值相加,结果在结果在AL中中AAA ;非压缩非压缩BCD码加法调整码加法调整MOV BX,AX ;累加结果送累加结果送BXLOOP LOP ;CX-1CX,判断判断CX0,则转则转习题习题3.13下面程序段的功能是把下面程序段的功能是把DA1数据区的数据区的0-9转换为对应的转换为对应的ASC码码.DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?)CUNT =ASCI-DA1LEA SI,DA1 ;送送数组数组DA1的的首地址偏移量到首地址偏移量到SILEA DI,ASCI ;送数组送数组ASCI的首地址偏移量到的首地址偏移量到DI MOV CX,CUNT;送数组送数组DA1的长度的长度LOP1:MOV AL,SI ;取数取数ADD AL,30H;或者或者OR AL,30H;加加30H变成变成ASC码码MOV DI,AL ;转换后存入数组转换后存入数组ASCIINC SI ;源数据地址加源数据地址加1INC DI ;目的数据地址加目的数据地址加1LOOP LOP1 ;CX-1CX,判断判断CX0,则转则转习题习题3.14设设A,B是长度为是长度为10的字节数组的字节数组,用串操作指令编写程用串操作指令编写程序实现序实现AB两数组内容的相互交换两数组内容的相互交换.试完善程序试完善程序.DATA SEGMENTA BD 1,2,3,4,5,6,7,8,9,0AHORG 0010HB DB 0AH,9,8,7,6,5,4,3,2,1DATA ENDSLEA SI,ALEA DI,BMOV CX,10LOP:LODSBXCHG AL,DIXCHG SI,DIDEC DISTOSBXCHG SI,DIINC DILOOP LOP习题习题3.15编写一程序段编写一程序段,将将AL中的第中的第7和第和第0位位,第第6和第和第1位位,第第5和第和第2位位,第第4和第和第3位互换位互换.XXDB?YYDB?MOVAL,XX MOV AH,0 MOV BL,1LOP1:ANDAL,AL JZDONE SHLAL,1 JNCNEXT ORAH,BLNEXT:SHLBL,1 JMPLOP1DONE:MOV YY,AH HLT习题习题3.16试试编写一程序段编写一程序段,在在CHAR为首的为首的26个单个单元中依次存放字母元中依次存放字母A-Z.DATASEGMENT CHARDB26 DUP(?)DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,START:MOVAX,DATA MOVDS,DATA MOV SI,OFFSET CHAR MOV CX,26 MOV AL,41HLOP1:MOV SI,AL INCSI INCAL LOOPLOP1 MOV AH,4CH INT21HCODEENDS END STARTCODE SEGMENT ASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX LEA BX,SQRTAB MOV AL,DAT CMP AL,0 JGE PLUS NEG ALPLUS:XLAT MOV SQR,AL MOV AH,4CH INT 21HCODEENDS END BEGIN习题习题3.17习题习题4.17设在数据段中有设在数据段中有X,Y两个变量两个变量(字节单元字节单元),试编写程序段计算试编写程序段计算(只写有关功能的指令只写有关功能的指令).X 当当X0时时Y=X 当当X 0时时XDB?YDB?MOV AL,XTEST AL,80HJZL1NEGALL1:y,AL