欢迎来到天天文库
浏览记录
ID:17629852
大小:73.50 KB
页数:4页
时间:2018-09-04
《实验三 汇编语言程序设计综合实验2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三汇编语言程序设计综合实验23.1实验目的1.掌握在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的全过程。2.学习较复杂的8086汇编语言程序设计的基本方法。3.巩固对8086指令系统、汇编语言伪指令的学习和掌握。3.2实验条件同1.2。3.3实验内容采用过程编写一个程序,从键盘输入一个十进制数,显示这个十进制数的位数。要求提示“Pleaseenterdata”后,光标停在第二行的开始处,然后键入一个十进制数;屏幕提示“Thenumberofthedatais”后,自动在下一行显示这个十进制数的位数。
2、说明:键入十进制数时,键盘输入的字符为ASCII码,0~9的ASCII码为30H~39H。要显示十进制数位数,需用十进制数0~9的ASCCII字符来显示,0~9的ASCII码为30H~39H。键入的十进制位数小于99位。3.4上机步骤1.编辑源程序用文本编辑器编辑源程序并以扩展名.ASM保存。2.汇编源程序用MASM.EXE对源程序进行汇编。汇编时,MASM.EXE可以检查源程序中的语法错误并指出错误所在的行号。如果有错误,修改源程序中的语法错误并保存文件,然后重新对源程序进行汇编。汇编时没有错误,才会生成目标程序。
3、3.连接目标程序用LINK.EXE对生成的目标程序进行连接,生成可执行程序。4.运行可执行程序在命令提示符下运行可执行程序。在提示“Pleaseenterdata”后键入一个十进制数,然后按下ENTER键,如果程序功能设计正确,即可显示十进制数的位数,如图2-1所示(datanum为可执行文件名)。键入1位、5位、9位、13位十进制数回车,对数据位数显示加以验证。最后按Ctrl-C程序退出,返回命令提示符。如果程序功能设计不正确,得不到正确的显示结果。为了检查程序设计中的错误,需要将可执行程序调入TD中进行调试。图2
4、-1运行datanum时的结果5.调试程序在TD中调试程序,就是通过单步运行、设置断点等手段,观察程序运行的中间结果,与预期的结果加以比较和分析,找出程序设计中的功能性错误。如果发现错误,通过修改源程序,重新汇编、连接、运行,直至运行结果正确。在采用TD调试时,按F7或F8键,单步跟踪程序的执行。F7与F8键的区别是,若当前执行的指令是CALL指令,则F7将跟踪进入被调入的子程序,而F8则把CALL指令及其调用的子程序当作一条完整的指令,要执行完子程序才停在CALL指令的下一条指令上。本程序由三个子程序组成,也可对三
5、个子程序分别调试。调试每一个子程序时,可通过修改IP指针来从每一个子程序的第一条指令开始单步运行,方法如下:将可执行文件调入TD中,查看代码区中每一个子程序的第一条指令的地址,然后按Tab键选择寄存器区为当前区域,将光标移到IP寄存器,直接键入子程序第一条指令的地址(如图2-2所示),在键入的同时屏幕上会自动弹出编辑输入窗口,最后按OK确认。以后就可用F7或F8键单步执行指令了,根据需要,也可以修改相关寄存器的内容来验证程序的正确性。图2-2将执行文件调入TD进行调试(0023H时string子程序第一条指令的地址)
6、3.5编程提示、实验程序与框图按照程序的功能可将程序设计为一个主程序和三个子程序来完成:子程序一string:通过DOS调用来等待键盘键入十进制数,若键入0~9以外的字符则退出该子程序(也可以由程序设定按某一特定键,如ENTER键,退出该子程序)。同时,子程序将键入的十进制数的位数作为子程序的出口,结果放到一个通用寄存器中(如CL)。子程序二num:将通用寄存器(如CL)中的十制数的位数在屏幕显示,过DOS调用由高位到低位逐位显示,十进制数位数最大为99位。子程序三crlf:采用DOS调用,实现回车换行。1.主程序框
7、图根据主程序框图编写主程序datasegmentstr1db'Pleaseenterdata',0dh,0ah,'$'str2db'Thenumberofthedatais',0dh,0ah,'$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axrepeat:……完成主程序jmprepeat2.键入十进制数子程序及框图stringprocnearmovcl,0;CL清零,存放十进制数的位数key:movah,1int21h图2-3主程序流
8、程图NY开始DOS调用等待键入字符返回cl=cl+130H≤AL≤39H?cl清零,存放十进制数位数图2-4键入十进制数子程序框图subal,30h;ASCII值到二进制cmpal,0jbexit;键入值<0,则退出cmpal,9jaexit;键入值>9,则退出inccl;十进制数位数加1,存放在CL中jmpkeyexit:retstringe
此文档下载收益归作者所有