汇编--宏指令设计【精选】

上传人:marr****208 文档编号:149757823 上传时间:2020-10-29 格式:DOC 页数:56 大小:254.50KB
返回 下载 相关 举报
汇编--宏指令设计【精选】_第1页
第1页 / 共56页
汇编--宏指令设计【精选】_第2页
第2页 / 共56页
汇编--宏指令设计【精选】_第3页
第3页 / 共56页
汇编--宏指令设计【精选】_第4页
第4页 / 共56页
汇编--宏指令设计【精选】_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《汇编--宏指令设计【精选】》由会员分享,可在线阅读,更多相关《汇编--宏指令设计【精选】(56页珍藏版)》请在金锄头文库上搜索。

1、一、实验目的和内容1. 掌握宏指令库的设计方法,并设计程序来调用其中的宏指令。2. 编程实现32位二进制数除以16位二进制数,并把结果用十进制数形式显示在屏幕上。要求采用宏指令库实现。二、实验原理及基本技术路线图(方框原理图)宏指令是源程序中一段有独立功能的程序代码。宏指令由宏定义伪指令定义,它只需在源程序中定义一次,便可以多次被调用。当源程序被汇编时,汇编程序对每个宏调用进行宏扩展。宏扩展就是用宏定义体替换宏指令名,并用实参数替换形式参数。宏调用中实参数个数和形式参数个数不等时,若实参数个数大于形式参数个数,在替换时多余的实参数不予考虑;若实参数个数小于形式参数个数,则多余的形式参数作为空(

2、字符)或零(数字)处理。应保证用实参数替换形式参数后,所展开的是有效的汇编语句,否则汇编程序会提示错误。为了使宏指令能让多个程序共享,可以把它们组织到一个文件中,并存放在磁盘上,把这种文件称为宏指令库。可以用EDIT等任何文本编辑程序创建宏指令库,库名由用户自己起,而且对库的扩展名没有特殊要求。库中的宏指令以源代码形式出现。开始将被除数的高字送DX将被除数的低字送AX被除数/除数:余数送DX,商送AX将AX内的16位二进制数转换为十进制的ASCII码清屏输出计算结果结束程序流程图三、所用仪器、材料(设备名称、型号、规格等)1. 操作系统平台:Windows 72. 汇编环境:Microsoft

3、 MASM 5.03. 文本编辑器:记事本四、实验方法、步骤1. 将MASM5的文件置于D:assembly目录下;2. 将masm.exe和link.exe所在目录(D:assemblyMASM5)添加到Path环境变量中;3. 在D:assembly下新建一个div.asm文件,打开div.asm,输入汇编程序代码;4. 新建一个宏指令库macro.lib,输入源代码,保存;5. 运行一个命令行窗口,将当前目录切换到D:assembly,然后输入命令:masm div.asm Enter,来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没有错误为止(特别

4、是对宏指令库的检查),此时会生成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;-PUSHREGMACROPUSH DXPUSH CXPUSH BXPUSH AXENDM;-;功能:恢复寄存器AX、BX、CX、

5、DX;-POPREGMACROPOP AXPOP BXPOP CXPOP DXENDM;-;功能:清屏;-CLRSCRNMACROPUSHREGMOV AH,6MOV AL,0MOV BH,1FHMOV CX,0MOV DX,184FHINT 10HPOPREGENDM;-;返回操作系统;-RETURN MACROMOV AX,4C00HINT 21HENDM;-;功能:把16位二进制数转换为十进制数的;ASCII值,ASC为5个字节的十进制数缓冲区,;BIN为要转换的二进制数。 ;-BIN_DEC MACROASC,BINPUSHREG;保存寄存器内容PUSH DILEA DI,ASC;保存

6、输出结果字符串的首地址XOR DX,DXMOV AX,BINMOV BX,10000DIV BX;求万位数ADD AL,30HMOV DI,AL;存放万位数的ASCII码INC DIMOV AX,DXXOR DX,DXMOV BX,1000DIV BX;求千位数ADD AL,30HMOV DI,AL;存放千位数的ASCII码INC DIMOV AX,DXXOR DX,DXMOV BX,100DIV BX;求百位数ADD AL,30HMOV DI,AL;存放百位数的ASCII码INC DIMOV AX,DXXOR DX,DXMOV BX,10DIV BX;求十位数ADD AL,30HMOV DI

7、,AL;存放十位数的ASCII码INC DIADD DL,30HMOV DI,DL;存放个位数的ASCII码POP DIPOPREG;恢复寄存器内容ENDM;-;显示首址为ASC的字符串;-DISP MACRO ASCPUSHDXLEADX,ASCMOVAH,9INT21HPOPDXENDMdiv.asm文件源码:INCLUDEMACRO.LIBSTACKSGSEGMENT STACK SDW 16 DUP(?)STACKSGENDSDATASEGMENTA DD 7006652;被除数B DW 1234;除数C DW ?;商PROMPTDB The result is: $ASCIIDB 5

8、 DUP(?),$ ;转换结果DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSGMAINPROCFARMOVAX,DATAMOVDS,AXMOVDX,WORD PTR A+2MOVAX,WORD PTR ADIVB;计算A/BBIN_DECASCII,AX;将商转换为十进制的ASCII码CLRSCRN;清屏DISP PROMPTDISPASCII;显示结果RETURNMAINENDPCODEENDSEND MAIN3. 汇编源程序:4. 连接生成可执行文件:5.调试程序:(1)在计算完A/B之后,调用宏指令BIN_DEC,从153D:001

9、0处展开宏:(2)将计算结果的万位(0)转为其对应的ASCII码存入ASCII数组的0号单元:(3)将计算结果的千位(5)转为其对应的ASCII码存入ASCII数组的1号单元:(4)将计算结果的百位(6)转为其对应的ASCII码存入ASCII数组的2号单元:(5)将计算结果的十位(7)转为其对应的ASCII码存入ASCII数组的3号单元:(6)将计算结果的个位(8)转为其对应的ASCII码存入ASCII数组的4号单元:(7)紧接着从153D:005B处开始调用CLRSCRN宏指令清屏:(8)清屏后的效果如下,并从153D:0071处开始调用DISP宏指令输出字符串The result is:

10、:(9)显示:The result is:,并从153D:007B处开始调用DISP宏指令输出计算结果:(10)显示计算结果:05678,并从153D:0085处开始调用RETURN宏指令,返回操作系统:(11)程序结束并退出(12)在命令行下直接运行div.exe的效果:六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸)1. 宏指令库在编写时,要特别注意保存要有到的寄存器,并且对宏指令的执行逻辑要非常清晰,保证当形参被替换为实参时,展开的汇编语句是正确的,否则将会出现错误。当宏指令结束时,同时还要恢复现场,保证堆栈平衡。2. 宏指令在定义时,一个好的习

11、惯是在其代码前面加以说明,解释对应宏指令的功能和执行逻辑。这样在使用时才能根据需要使用不同的宏指令,也方便代码阅读。3. 宏指令和子程序的用途可以简单的总结为:通常宏指令被用在代码较短且参数较多的场合,而子程序则被用在代码较长的场合。-57-以下是附加文档,不需要的朋友下载后删除,谢谢顶岗实习总结专题13篇第一篇:顶岗实习总结为了进一步巩固理论知识,将理论与实践有机地结合起来,按照学校的计划要求,本人进行了为期个月的顶岗实习。这个月里的时间里,经过我个人的实践和努力学习,在同事们的指导和帮助下,对村的概况和村委会有了一定的了解,对村村委会的日常工作及内部制度有了初步的认识,同时,在与其他工作人

12、员交谈过程中学到了许多难能可贵经验和知识。通过这次实践,使我对村委会实务有所了解,也为我今后的顺利工作打下了良好的基础。一、实习工作情况村是一个(此处可添加一些你实习的那个村和村委会的介绍)我到村村委会后,先了解了村的发展史以及村委会各个机构的设置情况,村委会的规模、人员数量等,做一些力所能及的工作,帮忙清理卫生,做一些后勤工作;再了解村的文化历史,认识了一些同事,村委会给我安排了一个特定的指导人;然后在村委会学习了解其他人员工作情况,实习期间我努力将自己在学校所学的理论知识向实践方面转化,尽量做到理论与实践相结合。在实习期间我遵守了工作纪律,不迟到、不早退,认真完成领导交办的工作。我在村委会主要是负责管理日常信件的工作,这个工作看似轻松,却是责任重大,来不得办点马虎。一封信件没有及时收发,很有可能造成工作的失误、严重的甚至会造成巨大的经济损失。很感谢村委会对我这个实习生的信任,委派了如此重要的工作给我。在实习过程中,在信件收发管理上,我一直亲力亲为,片刻都不敢马虎。为了做好信件的管理工作,我请教村委会的老同事、上网查阅相关资料,整理出了一套信函管理的具体方法。每次邮递员送来的信件,我都要亲自检查有无开封、损坏的函件,如

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号