汇编语言第七章答案.doc

上传人:h**** 文档编号:1422788 上传时间:2019-02-25 格式:DOC 页数:9 大小:46.50KB
下载 相关 举报
汇编语言第七章答案.doc_第1页
第1页 / 共9页
汇编语言第七章答案.doc_第2页
第2页 / 共9页
汇编语言第七章答案.doc_第3页
第3页 / 共9页
汇编语言第七章答案.doc_第4页
第4页 / 共9页
汇编语言第七章答案.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、7.1 编写一条宏指令 CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。答:宏定义如下:CLRB MACRO N, CFILMOV CX, NCLDMOV AL, ;取空格符的 ASCII 码LEA DI, CFILREP STOSBENDM7.2 某工厂计算周工资的方法是每小时的工资率 RATE 乘以工作时间 HOUR,另外每工作满10小时加奖金3元,工资总数存放在 WAG 中。请将周工资的计算编写成一条宏指令WAGES,并展开宏调用:WAGES R1, 42, SUM答:宏定义如下:WAGES MACRO RATE, HOUR, WAGMOV AL, HOU

2、R ;计算周工资(WAG),公式为:HOUR* RATEMOV BL, RATEMUL BLMOV WAG, AXMOV AL, HOUR ;计算奖金存入(AX),公式为:HOUR/10的商*3MOV AH, 0MOV BL, 10DIV BLMOV BL, 3MUL BLADD WAG, AX ;计算周工资总数ENDM宏调用:WAGES R1, 42, SUM宏展开:1 MOV AL, 421 MOV BL, R11 MUL BL1 MOV SUM, AX1 MOV AL, 421 MOV AH, 01 MOV BL, 101 DIV BL1 MOV BL, 31 MUL BL1 ADD S

3、UM, AX7.3 给定宏定义如下:(注意:此宏指令的功能是 V3|V1-V2|)DIF MACRO X, YMOV AX, XSUB AX, YENDMABSDIF MACRO V1, V2, V3LOCAL CONTPUSH AXDIF V1, V2CMP AX, 0JGE CONTNEG AXCONT: MOV V3, AXPOP AXENDM试展开以下调用,并判定调用是否有效。(1) ABSDIF P1, P2, DISTANCE(2) ABSDIF BX, SI, XDI, CX(3) ABSDIF BXSI, XBXSI, 240H(4) ABSDIF AX, AX, AX答:(1

4、) 宏调用 ABSDIF P1, P2, DISTANCE 的宏展开如下:此宏调用有效。1 PUSH AX1 DIF P1, P21 MOV AX, P11 SUB AX, P21 CMP AX, 01 JGE ?00001 NEG AX1 ?0000: MOV DISTANCE, AX1 POP AX(2) 宏调用 ABSDIF BX, SI, XDI, CX 的宏展开如下:此宏调用有效。1 PUSH AX1 DIF BX, SI1 MOV AX, BX1 SUB AX, SI1 CMP AX, 01 JGE ?00011 NEG AX1 ?0001: MOV XDI, AX1 POP AX

5、(3) 宏调用 ABSDIF BXSI, XBXSI, 240H 的宏展开如下:此宏调用无效。1 PUSH AX1 DIF BXSI, XBXSI1 MOV AX, BXSI1 SUB AX, XBXSI1 CMP AX, 01 JGE ?00021 NEG AX1 ?0002: MOV 240H, AX1 POP AX(4) 宏调用 ABSDIF AX, AX, AX 的宏展开如下:此宏调用有效但无多大意义。1 PUSH AX1 DIF AX, AX1 MOV AX, AX1 SUB AX, AX1 CMP AX, 01 JGE ?00031 NEG AX1 ?0003: MOV AX, A

6、X1 POP AX7.4 试编制宏定义,要求把存储器中的一个用 EOT(ASCII 码04H )字符结尾的字符串传送到另一个存储区去。答:宏定义如下:SEND MACRO SCHARS, DCHARSLOCAL NEXT, EXITPUSH AXPUSH SIMOV SI, 0NEXT: MOV AL, SCHARSSIMOV DCHARSSI, ALCMP AL, 04H ;是 EOT 字符吗?JZ EXITINC SIJMP NEXTEXIT: POP SIPOP AXENDM7.5 宏指令 BIN_SUB 完成多个字节数据连减的功能:RESULT(A-B-C-D-)要相减的字节数据顺序存

7、放在首地址为 OPERAND 的数据区中,减数的个数存放在COUNT 单元中,最后结果存入 RESULT 单元。请编写此宏指令。答:宏定义如下:BIN_SUB MACRO RESULT, A, OPERAND, COUNTLOCAL NEXT_SUBPUSH CXPUSH BXPUSH AXMOV CX, COUNTMOV AL, ALEA BX, OPERANDCLCNEXT_SUB: SBB AL, BXINC BXLOOP NEXT_SUBMOV RESULT, ALPOP AXPOP BXPOP CXENDM7.6 请用宏指令定义一个可显示字符串 GOOD: GOOD STUDENTS

8、: CLASSX NAME,其中 X 和 NAME 在宏调用时给出。答:宏定义如下:DISP_GOOD MACRO X, NAMEGOOD DB GOOD STUDENTS: CLASS&X &NAME, 0DH, 0AH, $ENDM7.7 下面的宏指令 CNT 和 INC1完成相继字存储。CNT MACRO A, BA&B DW ?ENDMINC1 MACRO A, BCNT A, %BB=B+1ENDM请展开下列宏调用:C=0INC1 DATA, CINC1 DATA, C答:宏展开如下:C=0INC1 DATA, C1 DATA0 DW ?INC1 DATA, C1 DATA0 DW

9、? (注意:C 为0没有变)7.8 定义宏指令并展开宏调用。宏指令 JOE 把一串信息MESSAGE NO. K存入数据存储区XK 中。宏调用为:I=0JOE TEXT, IJOE TEXT, IJOE TEXT, I答:宏定义如下:MARY MACRO X, KX&K DB MESSAGE NO. &KENDMJOE MACRO A, IMARY A, %II=I+1ENDM宏调用和宏展开:I=0JOE TEXT, I1 TEXT0 DB MESSAGE NO. 0JOE TEXT, I1 TEXT1 DB MESSAGE NO. 1JOE TEXT, I1 TEXT2 DB MESSAGE

10、 NO. 27.9 宏指令 STORE 定义如下:STORE MACRO X, NMOV X+I, II=I+1IF I-NSTORE X, NENDIFENDM试展开下列宏调用:I=0STORE TAB, 7答:宏展开如下:I=0STORE TAB, 71 MOV TAB+0, 01 MOV TAB+1, 11 MOV TAB+2, 21 MOV TAB+3, 31 MOV TAB+4, 41 MOV TAB+5, 51 MOV TAB+6, 67.10 试编写非递归的宏指令,使其完成的工作与7.9题的 STORE 相同。答:宏定义如下:STORE MACRO KMOV TAB+K, KEN

11、DM宏调用:I=0REPT 7STORE %II=I+1ENDM7.11 试编写一段程序完成以下功能,如给定名为 X 的字符串长度大于5时,下列指令将汇编10次。ADD AX, AX答:程序段如下:X DB ABCDEFGIF ($-X) GT 5REPT 10ADD AX, AXENDMENDIF7.12 定义宏指令 FINSUM:比较两个数 X 和 Y(X、Y 为数,而不是地址),若 XY 则执行SUMX+2*Y;否则执行 SUM2*X+Y。答:宏定义如下:CALCULATE MACRO A, B, RESULT ;计算 RESULT2*A+BMOV AX, ASHL AX, 1ADD A

12、X, BMOV RESULT, AXENDMFINSUM MACRO X, Y, SUMIF X GT YCALCULATE Y, X, SUMELSECALCULATE X, Y, SUMENDIFENDM7.13 试编写一段程序完成以下功能:如变元 X=VT55,则汇编 MOV TERMINAL, 0;否则汇编MOV TERMINAL, 1。答:宏定义如下:BRANCH MACRO XIFIDN , MOV TERMINAL, 0ELSEMOV TERMINAL, 1ENDIFENDM7.14 对于 DOS 功能调用,所有的功能调用都需要在 AH 寄存器中存放功能码,而其中有一些功能需要在

13、 DX 中放一个值。试定义宏指令 DOS21,要求只有在程序中定义了缓冲区时,汇编为:MOV AH, DOSFUNCMOV DX, OFFSET BUFFINT 21H否则,无 MOV DX, OFFSET BUFF 指令。并展开以下宏调用:DOS21 01DOS21 0AH, IPFIELD答:宏定义如下:DOS21 MACRO DOSFUNC, BUFFMOV AH, DOSFUNCIFDEF BUFFMOV DX, OFFSET BUFFENDIFINT 21HENDM宏展开:DOS21 011 MOV AH, 011 INT 21HDOS21 0AH, IPFIELD1 MOV AH,

14、 0AH1 MOV DX, OFFSET IPFIELD1 INT 21H7.15 编写一段程序,使汇编程序根据 SIGN 中的内容分别产生不同的指令。如果(SIGN)=0,则用字节变量 DIVD 中的无符号数除以字节变量 SCALE;如果(SIGN)=1,则用字节变量 DIVD 中的带符号数除以字节变量 SCALE,结果都存放在字节变量 RESULT 中。答:程序段如下:MOV AL, DIVDIF SIGNMOV AH, 0DIV SCALEELSECBWIDIV SCALEENDIFMOV RESULT, AL7.16 试编写宏定义 SUMMING,要求求出双字数组中所有元素之和,并把结

15、果保存下来。该宏定义的哑元应为数组首址 ARRAY,数组长度 COUNT 和结果存放单元 RESULT。答:宏定义如下:SUMMING MACRO ARRAY,COUNT,RESULTLOCAL ADDITIONMOV ESI, 0MOV ECX, COUNTADDITION: MOV EAX, ARRAYESI*4 ;双字为4字节ADD RESULT, EAXADC RESULT+4, 0 ;将进位加到结果的高位双字中INC ESILOOP ADDITIONENDM7.17 为下列数据段中的数组编制一程序,调用题7.16的宏定义 SUMMING,求出该数组中各元素之和。DATA DD 101

16、246,274365,843250,475536SUM DQ ?答:程序如下:SUMMING MACRO ARRAY,COUNT,RESULTLOCAL ADDITIONMOV ESI, 0MOV ECX, COUNTADDITION: MOV EAX, ARRAYESI*4 ;双字为4字节ADD RESULT, EAXADC RESULT+4, 0 ;将进位加到结果的高位双字中INC ESILOOP ADDITIONENDM.MODEL SMALL.386.DATADATA DD 101246,274365,843250,475536SUM DQ ?.CODESTART: MOV AX, DATAMOV DS, AXSUMMING DATA, 4, SUMMOV AX, 4C00HINT 21HEND START7.18 如把题7.16中的宏定义存放在一个宏库中,则题7.17的程序应如何修改?答:程序修改如下:INCLUDE MACRO.MAC ;假设存放的宏库名为 MACRO.MAC.MODEL SMALL.386.DATADATA DD 101246,274365,843250,475536SUM DQ ?.CODESTART: MOV AX, DATAMOV DS, AXSUMMING DATA, 4, SUMMOV AX, 4C00HINT 21HEND START

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 试题真题

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。