资源描述:
《汇编语言第七章答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、7.1编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。答:宏定义如下:CLRBMACRON,CFILMOVCX,NCLDMOVAL,‘’;;取空格符的ASCII码LEADI,CFILREPSTOSBENDM7.2某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满10小时加奖金3元,工资总数存放在WAG中。请将周工资的计算编写成一条宏指令WAGES,并展开宏调用:WAGESR1,42,SUM答:宏定义如下:WAGESMACRORATE,HOUR,WAGMOVAL,HOUR;;计算周工资(WAG),公式为:
2、HOUR*RATEMOVBL,RATEMULBLMOVWAG,AXMOVAL,HOUR;;计算奖金存入(AX),公式为:HOUR/10的商*3MOVAH,0MOVBL,10DIVBLMOVBL,3MULBLADDWAG,AX;;计算周工资总数ENDM宏调用:WAGESR1,42,SUM宏展开:1MOVAL,421MOVBL,R11MULBL1MOVSUM,AX1MOVAL,421MOVAH,01MOVBL,101DIVBL1MOVBL,31MULBL1ADDSUM,AX7.3给定宏定义如下:(注意:此宏指令的功能是V3←
3、V1-V2
4、)DIFMACROX,YMOVAX,XSUB
5、AX,YENDMABSDIFMACROV1,V2,V3LOCALCONTPUSHAXDIFV1,V2CMPAX,0JGECONTNEGAXCONT:MOVV3,AXPOPAXENDM试展开以下调用,并判定调用是否有效。(1)ABSDIFP1,P2,DISTANCE(2)ABSDIF[BX],[SI],X[DI],CX(3)ABSDIF[BX][SI],X[BX][SI],240H(4)ABSDIFAX,AX,AX答:(1)宏调用ABSDIFP1,P2,DISTANCE的宏展开如下:此宏调用有效。1PUSHAX1DIFP1,P21MOVAX,P11SUBAX,P21CMPAX,0
6、1JGE??00001NEGAX1??0000:MOVDISTANCE,AX1POPAX(2)宏调用ABSDIF[BX],[SI],X[DI],CX的宏展开如下:此宏调用有效。1PUSHAX1DIF[BX],[SI]1MOVAX,[BX]1SUBAX,[SI]1CMPAX,01JGE??00011NEGAX1??0001:MOVX[DI],AX1POPAX(3)宏调用ABSDIF[BX][SI],X[BX][SI],240H的宏展开如下:此宏调用无效。1PUSHAX1DIF[BX][SI],X[BX][SI]1MOVAX,[BX][SI]1SUBAX,X[BX][SI]1CMP
7、AX,01JGE??00021NEGAX1??0002:MOV240H,AX1POPAX(4)宏调用ABSDIFAX,AX,AX的宏展开如下:此宏调用有效但无多大意义。1PUSHAX1DIFAX,AX1MOVAX,AX1SUBAX,AX1CMPAX,01JGE??00031NEGAX1??0003:MOVAX,AX1POPAX7.4试编制宏定义,要求把存储器中的一个用EOT(ASCII码04H)字符结尾的字符串传送到另一个存储区去。答:宏定义如下:SENDMACROSCHARS,DCHARSLOCALNEXT,EXITPUSHAXPUSHSIMOVSI,0NEXT:MOVAL,
8、SCHARS[SI]MOVDCHARS[SI],ALCMPAL,04H;;是EOT字符吗?JZEXITINCSIJMPNEXTEXIT:POPSIPOPAXENDM7.5宏指令BIN_SUB完成多个字节数据连减的功能:RESULT←(A-B-C-D-…)要相减的字节数据顺序存放在首地址为OPERAND的数据区中,减数的个数存放在COUNT单元中,最后结果存入RESULT单元。请编写此宏指令。答:宏定义如下:BIN_SUBMACRORESULT,A,OPERAND,COUNTLOCALNEXT_SUBPUSHCXPUSHBXPUSHAXMOVCX,COUNTMOVAL,ALEAB
9、X,OPERANDCLCNEXT_SUB:SBBAL,[BX]INCBXLOOPNEXT_SUBMOVRESULT,ALPOPAXPOPBXPOPCXENDM7.6请用宏指令定义一个可显示字符串GOOD:‘GOODSTUDENTS:CLASSXNAME’,其中X和NAME在宏调用时给出。答:宏定义如下:DISP_GOODMACROX,NAMEGOODDB‘GOODSTUDENTS:CLASS&X&NAME’,0DH,0AH,‘$’ENDM7.7下面的宏指令CNT和INC1完成相继字存储。CN