- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编--宏指令设计汇编--宏指令设计
一、实验目的和内容
1. 掌握宏指令库的设计方法,并设计程序来调用其中的宏指令。
2. 编程实现32位二进制数除以16位二进制数,并把结果用十进制数形式显示在屏幕上。要求采用宏指令库实现。
二、实验原理及基本技术路线图(方框原理图)
宏指令是源程序中一段有独立功能的程序代码。宏指令由宏定义伪指令定义,它只需在源程序中定义一次,便可以多次被调用。
当源程序被汇编时,汇编程序对每个宏调用进行宏扩展。宏扩展就是用宏定义体替换宏指令名,并用实参数替换形式参数。宏调用中实参数个数和形式参数个数不等时,若实参数个数大于形式参数个数,在替换时多余的实参数不予考虑;若实参数个数小于形式参数个数,则多余的形式参数作为空(字符)或零(数字)处理。应保证用实参数替换形式参数后,所展开的是有效的汇编语句,否则汇编程序会提示错误。
为了使宏指令能让多个程序共享,可以把它们组织到一个文件中,并存放在磁盘上,把这种文件称为宏指令库。可以用EDIT等任何文本编辑程序创建宏指令库,库名由用户自己起,而且对库的扩展名没有特殊要求。库中的宏指令以源代码形式出现。
三、所用仪器、材料(设备名称、型号、规格等)
1. 操作系统平台:Windows 7
2. 汇编环境:Microsoft MASM 5.0
3. 文本编辑器:记事本
四、实验方法、步骤
1. 将MASM5的文件置于D:\assembly目录下;
2. 将masm.exe和link.exe所在目录(D:\assembly\MASM5)添加到Path环境变量中;3. 在D:\assembly下新建一个div.asm文件,打开div.asm,输入汇编程序代码;
4. 新建一个宏指令库macro.lib,输入源代码,保存;
5. 运行一个命令行窗口,将当前目录切换到D:\assembly,然后输入命令:masm div.asm [Enter],来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没有错误为止(特别是对宏指令库的检查),此时会生成div.obj文件;
6. 输入命令:link div.obj [Enter],观察输出结果,如果没有错误,则生成div.exe;
7. 输入命令:debug div.exe [Enter],调试程序,并记录运行过程;
8. 完成实验报告。
五、实验过程原始记录(数据、图表、计算等)
1. 新建一个宏指令库macro.lib:
2. 新建名为div.asm的文件,输入汇编程序代码:
MACRO.LIB文件源码:
;-----------------------------------
;功能:保存寄存器DX、CX、BX、AX
;-----------------------------------
PUSHREG MACRO
PUSH DX
PUSH CX
PUSH BX
PUSH AX
ENDM
;-----------------------------------
;功能:恢复寄存器AX、BX、CX、DX
;-----------------------------------
POPREG MACRO
POP AX
POP BX
POP CX
POP DX
ENDM
;-----------------------------------
;功能:清屏
;-----------------------------------
CLRSCRN MACRO
PUSHREG
MOV AH,6
MOV AL,0
MOV BH,1FH
MOV CX,0
MOV DX,184FH
INT 10H
POPREG
ENDM
;-----------------------------------
;返回操作系统
;-----------------------------------
RETURN MACRO
MOV AX,4C00H
INT 21H
ENDM
;-----------------------------------
;功能:把16位二进制数转换为十进制数的
;ASCII值,ASC为5个字节的十进制数缓冲区,
;BIN为要转换的二进制数。
;-----------------------------------
BIN_DEC MACRO ASC,BIN
PUSHREG ;保存寄存器内容
PUSH DI
LEA DI,ASC ;保存输出结果字符串的首地址
XOR DX,DX
MOV AX,BIN
MOV BX,100
文档评论(0)