教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

新版汇编语言程序设计习题答案(钱晓捷主编)(6)

来源:网络收集 时间:2026-03-07
导读: jne abc jmp done abc: inc ax done: .... 5.4; 宏定义采用一对伪指令实现,格式如下(其中方括号表示可选): 宏名 macro [形参表] 宏定义体 endm 宏调用时,利用宏名带上实参即可,格式如下: 宏名 [实参表] 5

jne abc jmp done abc: inc ax done: .... 5.4;

宏定义采用一对伪指令实现,格式如下(其中方括号表示可选): 宏名 macro [形参表] 宏定义体 endm

宏调用时,利用宏名带上实参即可,格式如下: 宏名 [实参表]

5.6;宏的参数功能非常强大,即可以没有参数,也可以带有一个或多个参数;而且参数的形式非常灵活,可以是常量、变量、存储单元、指令或它们的一部分,还可以是表达式等。

宏展开时的形参与实参结合是用位置匹配的实参对形参进行取代。实参个数与形参个数不同时,多余的实参没有作用,缺少的实参则用空格代替。取代时,不进行有效性等检查。

5.7;宏汇编的特点是在汇编阶段进行语句展开,无需返回,不减少目标程序代码,执行速度没有改变;通过形参、实参结合传递参数。宏汇编适合于程序段较短或要求执行速度快的场合。

子程序在执行阶段需要由主程序执行调用指令CALL进行调用,进而转入子程序执行,子程序执行结束执行返回指令RET返回主程序。子程序如果被多次使用,则会减少目标程序代码;主程序与子程序之间主要采用寄存器、存储单元、堆栈等传递参数。子程序适合于程序段较长或为减少目标代码的场合。 5.9;shrot word ptr [bx],4,ror 1 push cx 1 mov cl,4

1 ror word ptr [bx],cl 1 pop cx 5.10;

logical macro lcode,dopd,sopd lcode dopd,sopd endm

例如,如果使用“and ax,[bx]”指令,可以利用该宏定义,写出宏指令如下:

第 26 页 共 29 页

logical and,ax,[bx]

初看起来,这个问题似乎比较难解决。实际上,这4条逻辑指令都具有相同的指令操作数格式,所以可以归纳为如上宏定义。

5.12; move MACRO doprnd,soprnd push ax mov ax,soprnd mov doprnd,ax pop ax ENDM 5.13;

movstr strN,dstr,sstr lea si, sstr lea di, dstr mov cx, strN cld rep movsb endm

5.14; ①ABSDIF Pl,P2,DISTANCE ②ABSDIF [BX],[SI],[DI] 1 push ax 答:1 push ax 1 mov ax,P1 1 mov ax,[bx] 1 sub ax,P2 1 sub ax,[si] 1 cmp ax,0 1 cmp ax,0 1 jge ?? 0000 1 jge ?? 0000 1 neg ax 1 neg ax 1 ?? 0000 1 ?? 0000

1 mov DISTANCE, ax 1 mov [di],ax 1 pop ax 1 pop ax 5.15; wtemp =2 repeat 100 dw 0 dw wtemp wtemp =wtemp+2 endm

第 27 页 共 29 页

5.18; DOS21H MACRO callnum,calladdress mov ah,callnum ifnb

mov dx,calladdress endif int 21h ENDM

5.22; 1.编写主程序,并进行汇编产生OBJ模块; 2.编写独立的子程序,也进行汇编产生OBJ模块;

3.分别编写主程序与子程序时,需要处理好共用变量、过程、逻辑段属性、参数传递等问题;

4.利用连接程序将主程序模块和子程序模块连接起来,形成完整的可执行程序。 5.28; ;数据段

table dw 2277,2138,1808,1709,1522,1356,1208,1139 ;对应中音1 ~ 7和高音i的定时器记数值 ;代码段

mov al,0b6h ;设置定时器2工作方式 out 43h,al

again: mov ah,1 ;等待按键 int 21h

cmp al,’1’ ;判断是否为数字1~8 jb next cmp al,’8’ ja next sub al,30h

;1~8的ASCII码转换为二进制数 sub al,1

;再减1,将数字1~8变为0~7,以便查表 xor ah,ah

shl ax,1 ;乘以2 mov bx,ax

;记数值表是16位数据,无法采用xlat指令 mov ax,table[bx] ;取出对应的记数值 out 42h,al ;设置定时器2的记数值 mov al,ah out 42h,al

in al,61h ;打开扬声器声音

第 28 页 共 29 页

or al,03h ;使D1D0=PB1PB0=11b,其他位不变 out 61h,al

jmp again ;连续发声,直到按下另一个键 next: push ax

in al,61h ;不是数字1~8,则关闭扬声器声音 and al,0fch ;使D1D0=PB1PB0=00b,其他位不变 out 61h,al pop ax

cmp al,1bh jne again ;判断是否为ESC键(对应ASCII码1bh) ;不是ESC,继续;否则程序执行结束

第 29 页 共 29 页

…… 此处隐藏:360字,全部文档内容请下载后查看。喜欢就下载吧 ……
新版汇编语言程序设计习题答案(钱晓捷主编)(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/442426.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)