第一范文网 - 专业文章范例文档资料分享平台

16/32位微机原理、汇编语言及接口技术课后习题答案

来源:用户分享 时间:2025/5/31 8:28:33 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

dispa

dldisp

dldisp1:

dldisp ⑵

wdata wordtemp

dispa

call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx ret endp ; proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 mov ah,2 int 21h pop ax ret endp end

.model small .stack .data dw 34abh dw ? .code .startup mov ax,wdata mov wordtemp,ax call dispa .exit 0 ; proc push cx push dx mov cl,4

dispa

dldisp

dldisp1:

dldisp ⑶

wdata

dispa

mov dl,byte ptr wordtemp+1 shr dl,cl call dldisp

mov dl,byte ptr wordtemp+1 and dl,0fh call dldisp

mov dl,byte ptr wordtemp shr dl,cl call dldisp

mov dl,byte ptr wordtemp and dl,0fh call dldisp pop dx pop cx ret endp ; proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 mov ah,2 int 21h pop ax ret endp end

.model small .stack .data dw 34abh .code .startup push wdata call dispa pop ax ;add sp,2

.exit 0 ; proc push bp mov bp,sp

push ax push cx push dx mov ax,[bp+4] mov cl,4 mov dl,ah shr dl,cl call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx pop ax pop bp ret dispa endp ; dldisp proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 dldisp1: mov ah,2 int 21h pop ax ret dldisp endp end 解:

如果利用共享变量传递函数,且变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTERN声明。

解:

(1)宏定义由一对宏汇编伪指令MACRO和ENDM来完成,格式如下: 宏名 MACRO [形参表] …… ;宏定义体

ENDM 宏定义之后就可以使用它,即宏调用: 宏名 [实参表]

(2)宏调用的格式同一般指令一样:在使用宏指令的位置写下宏名,后跟实体参数;如果有多个参数,应按形参顺序填入实参,也用逗号分隔

(3)宏展开:在汇编时,宏指令被汇编程序用对应的代码序列替代,这就是宏展开 宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体完全替代源程序的宏指令,同时用位置匹配的实参对形参进行取代

解:

宏调用的参数通过形参、实参结合实现传递,简捷直观、灵活多变。宏汇编的一大特色是它的参数。宏定义时既可以无参数,也可以有一个或多个参数;宏调用时实参的形式也非常灵活,可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;只要宏展开后符合汇编语言的语法规则即可。

解:

宏:仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变

通过形参、实参结合实现参数传递,简捷直观、灵活多变

子程序:还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢 需要利用寄存器、存储单元或堆栈等传递参数

选择:宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法。通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序

编写一个宏指令move doprnd,soprnd,它实现任意寻址方式的字量源操作数soprnd送到目的操作数doprnd,包括存储单元到存储单元的传送功能。 答: move macro doprnd,soprnd mov ax,soprnd mov doprnd,ax endm

定义一个宏logical,用它代表4条逻辑运算指令:and/or/xor/test。注意需要利用3个形式参数,并给出一个宏调用以及对应宏展开的例子。 答: logical macro lcode,dopd,sopd lcode dopd,sopd endm

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

解:

16/32位微机原理、汇编语言及接口技术课后习题答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c87idp16o1j9acj39qpyw5s23r4b08q00emu_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top