汇编语言第七章答案.pdf
《汇编语言第七章答案.pdf》由会员分享,可在线阅读,更多相关《汇编语言第七章答案.pdf(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!7.1 编写一条宏指令 CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。答:宏定义如下:CLRB MACRO N,CFIL MOV CX,N CLD MOV AL,;取空格符的 ASCII 码 LEA DI,CFIL REP STOSB ENDM 7.2 某工厂计算周工资的方法是每小时的工资率 RATE 乘以工作时间 HOUR,另外每工作满10小时加奖金3元,工资总数存放在 WAG 中。请将周工资的计算编写成一条宏指令 WAGES,并展开宏调用:WAGES R1,42,
2、SUM 答:宏定义如下:WAGES MACRO RATE,HOUR,WAG MOV AL,HOUR;计算周工资(WAG),公式为:HOUR*RATE MOV BL,RATE MUL BL MOV WAG,AX MOV AL,HOUR;计算奖金存入(AX),公式为:HOUR/10的商*3 MOV AH,0 MOV BL,10 DIV BL MOV BL,3 MUL BL ADD WAG,AX;计算周工资总数 ENDM 宏调用:WAGES R1,42,SUM 宏展开:1 MOV AL,42 1 MOV BL,R1 1 MUL BL 1 MOV SUM,AX 1 MOV AL,42 1 MOV AH
3、,0 1 MOV BL,10 1 DIV BL 1 MOV BL,3 1 MUL BL 1 ADD SUM,AX 7.3 给定宏定义如下:(注意:此宏指令的功能是 V3|V1-V2|)DIF MACRO X,Y 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV AX,X SUB AX,Y ENDM ABSDIF MACRO V1,V2,V3 LOCAL CONT PUSH AX DIF V1,V2 CMP AX,0 JGE CONT NEG AX CONT:MOV V3,AX POP AX ENDM 试展开以下调用,并判定调用是否有效。(1)
4、ABSDIF P1,P2,DISTANCE(2)ABSDIF BX,SI,XDI,CX(3)ABSDIF BXSI,XBXSI,240H(4)ABSDIF AX,AX,AX 答:(1)宏调用 ABSDIF P1,P2,DISTANCE 的宏展开如下:此宏调用有效。1 PUSH AX 1 DIF P1,P2 1 MOV AX,P1 1 SUB AX,P2 1 CMP AX,0 1 JGE?0000 1 NEG AX 1?0000:MOV DISTANCE,AX 1 POP AX(2)宏调用 ABSDIF BX,SI,XDI,CX 的宏展开如下:此宏调用有效。1 PUSH AX 1 DIF BX,
5、SI 1 MOV AX,BX 1 SUB AX,SI 1 CMP AX,0 1 JGE?0001 1 NEG AX 1?0001:MOV XDI,AX 1 POP AX(3)宏调用 ABSDIF BXSI,XBXSI,240H 的宏展开如下:此宏调用无效。1 PUSH AX 1 DIF BXSI,XBXSI 1 MOV AX,BXSI 1 SUB AX,XBXSI 1 CMP AX,0 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!1 JGE?0002 1 NEG AX 1?0002:MOV 240H,AX 1 POP AX(4)宏调用 ABSD
6、IF AX,AX,AX 的宏展开如下:此宏调用有效但无多大意义。1 PUSH AX 1 DIF AX,AX 1 MOV AX,AX 1 SUB AX,AX 1 CMP AX,0 1 JGE?0003 1 NEG AX 1?0003:MOV AX,AX 1 POP AX 7.4 试编制宏定义,要求把存储器中的一个用 EOT(ASCII 码04H)字符结尾的字符串传送到另一个存储区去。答:宏定义如下:SEND MACRO SCHARS,DCHARS LOCAL NEXT,EXIT PUSH AX PUSH SI MOV SI,0 NEXT:MOV AL,SCHARSSI MOV DCHARSSI,
7、AL CMP AL,04H;是 EOT 字符吗?JZ EXIT INC SI JMP NEXT EXIT:POP SI POP AX ENDM 7.5 宏指令 BIN_SUB 完成多个字节数据连减的功能:RESULT(A-B-C-D-)要相减的字节数据顺序存放在首地址为 OPERAND 的数据区中,减数的个数存放在 COUNT单元中,最后结果存入 RESULT 单元。请编写此宏指令。答:宏定义如下:BIN_SUB MACRO RESULT,A,OPERAND,COUNT LOCAL NEXT_SUB PUSH CX PUSH BX PUSH AX MOV CX,COUNT MOV AL,A L
8、EA BX,OPERAND 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!CLC NEXT_SUB:SBB AL,BX INC BX LOOP NEXT_SUB MOV RESULT,AL POP AX POP BX POP CX ENDM 7.6 请用宏指令定义一个可显示字符串 GOOD:GOOD STUDENTS:CLASSX NAME,其中X 和 NAME 在宏调用时给出。答:宏定义如下:DISP_GOOD MACRO X,NAME GOOD DB GOOD STUDENTS:CLASS&X&NAME,0DH,0AH,$ENDM 7.7 下
9、面的宏指令 CNT 和 INC1完成相继字存储。CNT MACRO A,B A&B DW?ENDM INC1 MACRO A,B CNT A,%B B=B+1 ENDM 请展开下列宏调用:C=0 INC1 DATA,C INC1 DATA,C 答:宏展开如下:C=0 INC1 DATA,C 1 DATA0 DW?INC1 DATA,C 1 DATA0 DW?(注意:C 为0没有变)7.8 定义宏指令并展开宏调用。宏指令 JOE 把一串信息MESSAGE NO.K存入数据存储区XK 中。宏调用为:I=0 JOE TEXT,I JOE TEXT,I JOE TEXT,I 答:宏定义如下:MARY
10、MACRO X,K 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!X&K DB MESSAGE NO.&K ENDM JOE MACRO A,I MARY A,%I I=I+1 ENDM 宏调用和宏展开:I=0 JOE TEXT,I 1 TEXT0 DB MESSAGE NO.0 JOE TEXT,I 1 TEXT1 DB MESSAGE NO.1 JOE TEXT,I 1 TEXT2 DB MESSAGE NO.2 7.9 宏指令 STORE 定义如下:STORE MACRO X,N MOV X+I,I I=I+1 IF I-N STORE X
11、,N ENDIF ENDM 试展开下列宏调用:I=0 STORE TAB,7 答:宏展开如下:I=0 STORE TAB,7 1 MOV TAB+0,0 1 MOV TAB+1,1 1 MOV TAB+2,2 1 MOV TAB+3,3 1 MOV TAB+4,4 1 MOV TAB+5,5 1 MOV TAB+6,6 7.10 试编写非递归的宏指令,使其完成的工作与7.9题的 STORE 相同。答:宏定义如下:STORE MACRO K MOV TAB+K,K ENDM 宏调用:I=0 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!REPT 7
12、 STORE%I I=I+1 ENDM 7.11 试编写一段程序完成以下功能,如给定名为 X 的字符串长度大于5时,下列指令将汇编10次。ADD AX,AX 答:程序段如下:X DB ABCDEFG IF($-X)GT 5 REPT 10 ADD AX,AX ENDM ENDIF 7.12 定义宏指令 FINSUM:比较两个数 X 和 Y(X、Y 为数,而不是地址),若 XY 则执行SUMX+2*Y;否则执行 SUM2*X+Y。答:宏定义如下:CALCULATE MACRO A,B,RESULT;计算 RESULT2*A+B MOV AX,A SHL AX,1 ADD AX,B MOV RES
13、ULT,AX ENDM FINSUM MACRO X,Y,SUM IF X GT Y CALCULATE Y,X,SUM ELSE CALCULATE X,Y,SUM ENDIF ENDM 7.13 试编写一段程序完成以下功能:如变元 X=VT55,则汇编 MOV TERMINAL,0;否则汇编 MOV TERMINAL,1。答:宏定义如下:BRANCH MACRO X IFIDN,MOV TERMINAL,0 ELSE MOV TERMINAL,1 ENDIF ENDM 7.14 对于 DOS 功能调用,所有的功能调用都需要在 AH 寄存器中存放功能码,而其中有一些功能需要在 DX 中放一个
14、值。试定义宏指令 DOS21,要求只有在程序中定义了缓冲区时,汇编为:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV AH,DOSFUNC MOV DX,OFFSET BUFF INT 21H 否则,无 MOV DX,OFFSET BUFF 指令。并展开以下宏调用:DOS21 01 DOS21 0AH,IPFIELD 答:宏定义如下:DOS21 MACRO DOSFUNC,BUFF MOV AH,DOSFUNC IFDEF BUFF MOV DX,OFFSET BUFF ENDIF INT 21H ENDM 宏展开:DOS21 01 1 M
15、OV AH,01 1 INT 21H DOS21 0AH,IPFIELD 1 MOV AH,0AH 1 MOV DX,OFFSET IPFIELD 1 INT 21H 7.15 编写一段程序,使汇编程序根据 SIGN 中的内容分别产生不同的指令。如果(SIGN)=0,则用字节变量 DIVD 中的无符号数除以字节变量 SCALE;如果(SIGN)=1,则用字节变量DIVD 中的带符号数除以字节变量 SCALE,结果都存放在字节变量 RESULT 中。答:程序段如下:MOV AL,DIVD IF SIGN MOV AH,0 DIV SCALE ELSE CBW IDIV SCALE ENDIF M
16、OV RESULT,AL 7.16 试编写宏定义 SUMMING,要求求出双字数组中所有元素之和,并把结果保存下来。该宏定义的哑元应为数组首址 ARRAY,数组长度 COUNT 和结果存放单元 RESULT。答:宏定义如下:SUMMING MACRO ARRAY,COUNT,RESULT LOCAL ADDITION MOV ESI,0 MOV ECX,COUNT ADDITION:MOV EAX,ARRAYESI*4;双字为4字节 ADD RESULT,EAX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!ADC RESULT+4,0;将进位加
17、到结果的高位双字中 INC ESI LOOP ADDITION ENDM 7.17 为下列数据段中的数组编制一程序,调用题7.16的宏定义 SUMMING,求出该数组中各元素之和。DATA DD 101246,274365,843250,475536 SUM DQ?答:程序如下:SUMMING MACRO ARRAY,COUNT,RESULT LOCAL ADDITION MOV ESI,0 MOV ECX,COUNT ADDITION:MOV EAX,ARRAYESI*4;双字为4字节 ADD RESULT,EAX ADC RESULT+4,0;将进位加到结果的高位双字中 INC ESI L
18、OOP ADDITION ENDM.MODEL SMALL.386.DATA DATA DD 101246,274365,843250,475536 SUM DQ?.CODE START:MOV AX,DATA MOV DS,AX SUMMING DATA,4,SUM MOV AX,4C00H INT 21H END START 7.18 如把题7.16中的宏定义存放在一个宏库中,则题7.17的程序应如何修改?答:程序修改如下:.MODEL SMALL.386.DATA DATA DD 101246,274365,843250,475536 SUM DQ?.CODE START:MOV AX,
19、DATA MOV DS,AX SUMMING DATA,4,SUM MOV AX,4C00H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!INT 21H END START 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,操作数为(
20、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)相加,并把结果送回存储器中。
21、(4)用位移量为 0524H 的直接寻址方式把存储器中的一个字与数 2A59H 相加,并把结果送回存储单元中。(5)把数 0B5H 与(AL)相加,并把结果送回 AL 中。答:(1)ADD DX,BX(2)ADD AL,BXSI(3)ADD BX+0B2H,CX(4)ADD WORD PTR 0524H,2A59H(5)ADD AL,0B5H 3.3 写出把首地址为 BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址 答:(1)MOV BX,OFFSET BLOCK ADD BX,(61)*2 MOV
22、 DX,BX(2)MOV BX,OFFSET BLOCK 改为:MOV BX,(6-1)*2 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(2)OBJ=0624H+02H+6BH=0691H(3)OBJ=0624H+02H+0C6H=05ECH ;C6H 对应的负数为-3AH(向上转移,负位移量)3.8 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名
23、 VAL 的偏移地址为 0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOV AX,0ABH (2)MOV AX,BX(3)MOV AX,100H (4)MOV AX,VAL(5)MOV AX,BX (6)MOV AX,ES:BX(7)MOV AX,BP (8)MOV AX,SI(9)MOV AX,BX+10 (10)MOV AX,VALBX(11)MOV AX,BXSI (12)MOV AX,VALBXSI 答:(1)立即方式;操作数在本条指令中(2)寄存器寻址方式;操作数为(BX)=0100H(3)直接寻址方式;PA=20100H(4)直接寻址方式;PA=2
24、0050H(5)BX 寄存器间接寻址方式;PA=20100H(6)附加段 BX 寄存器间接寻址方式;PA=21100H(7)BP 寄存器间接寻址方式;PA=15010H(8)SI 寄存器间接寻址方式;PA=200A0H(9)BX 寄存器相对寻址方式;PA=20110H(10)BX 寄存器相对寻址方式;PA=20150H(11)BX 和 SI 寄存器基址变址寻址方式;PA=201A0H(12)BX 和 SI 寄存器相对基址变址寻址方式;PA=201F0H 3.9 在 ARRAY 数组中依次存储了七个字数据,紧接着是名为 ZERO 的字单元,表示如下:ARRAY DW 23,36,2,100,32
25、000,54,0 ZERO DW?(1)如果 BX 包含数组 ARRAY 的初始地址,请编写指令将数据 0 传送给 ZERO 单元。(2)如果 BX 包含数据 0 在数组中的位移量,请编写指令将数据 0 传送给 ZERO 单元。答:(1)MOV AX,BX+(7-1)*2 MOV BX+(7)*2,AX(2)MOV AX,ARRAY BX MOV ARRAY BX+2,AX 3.10 如 TABLE 为数据段中 0032 单元的符号名,其中存放的内容为 1234H,试问以下两条指令有什么区别?指令执行完后 AX 寄存器的内容是什么?MOV AX,TABLE LEA AX,TABLE 答:MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 第七 答案
限制150内