- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言第七章的答案
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, 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, 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) ABSDIF P1, P2, DISTANCE
(2) ABSDIF [BX], [SI], X[DI], CX
(3) ABSDIF [BX][SI], X[BX][SI], 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], X[DI], CX 的宏展开如下:此宏调用有效。
1 PUSH AX
1 DIF [BX], [SI]
1 MOV AX, [BX]
1 SUB AX, [SI]
1 CMP AX, 0
1 JGE ??0001
1 NEG AX
1 ??0001: MOV X[DI], AX
1 POP AX
(3) 宏调用 ABSDIF [BX][SI], X[BX][SI], 240H 的宏展开如下:此宏调用无效。
1 PUSH AX
1 DIF [BX][SI], X[BX][SI]
1 MOV AX, [BX][SI]
1 SUB AX, X[BX][SI]
1 CMP AX, 0
1 JGE ??0002
1 NEG AX
1 ??0002: MOV 240H, AX
1 POP AX
(4) 宏调用 ABSDIF 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, SCHARS[SI]
MOV DCHARS[SI], 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的数据区中,减
您可能关注的文档
最近下载
- 吉尔认知负荷模式下浅谈听力与口译.doc VIP
- 湖南省新高考教学教研(长郡二十校)联盟2025届高三上学期第一次预热演练英语试题(含答案).docx VIP
- 2023年温州医科大学公共课《C语言》科目期末试卷B(有答案).docx VIP
- 2025年长沙民政职业技术学院单招职业适应性测试题库及参考答案1套.docx VIP
- 钢笔楷书字帖-偏旁部首.pdf VIP
- 人教版九年级物理全一册期末复习知识点(填空版).pdf VIP
- 湖南省新高考教学教研(长郡二十校)联盟2024-2025学年高三上学期第一次预热演练物理试卷(含答案).pdf VIP
- 2024《施工组织设计研究的国内外文献综述》3300字.docx VIP
- 名著阅读《小英雄雨来》 导读课课件.pptx VIP
- 厦门大学进化生物学第12章生态系统的进化.ppt VIP
文档评论(0)