- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]实验三 汇编语言程序设计综合实验2
实验三 汇编语言程序设计综合实验2
3.1实验目的
1. 掌握在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的全过程。
2. 学习较复杂的8086汇编语言程序设计的基本方法。
3. 巩固对8086指令系统、汇编语言伪指令的学习和掌握。
3.2实验条件
同1.2。
3.3实验内容
采用过程编写一个程序,从键盘输入一个十进制数,显示这个十进制数的位数。要求提示“Please enter data”后,光标停在第二行的开始处,然后键入一个十进制数;屏幕提示“The number of the data is”后,自动在下一行显示这个十进制数的位数。
说明:键入十进制数时,键盘输入的字符为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. 连接目标程序
用LINK.EXE对生成的目标程序进行连接,生成可执行程序。
4. 运行可执行程序
在命令提示符下运行可执行程序。在提示“Please enter data”后键入一个十进制数,然后按下ENTER键,如果程序功能设计正确,即可显示十进制数的位数,如图2-1所示(datanum为可执行文件名)。
键入1位、5位、9位、13位十进制数回车,对数据位数显示加以验证。最后按Ctrl-C程序退出,返回命令提示符。
如果程序功能设计不正确,得不到正确的显示结果。为了检查程序设计中的错误,需要将可执行程序调入TD中进行调试。
图2-1运行datanum 时的结果
5. 调试程序
在TD中调试程序,就是通过单步运行、设置断点等手段,观察程序运行的中间结果,与预期的结果加以比较和分析,找出程序设计中的功能性错误。如果发现错误,通过修改源程序,重新汇编、连接、运行,直至运行结果正确。
在采用TD调试时,按F7或F8键,单步跟踪程序的执行。F7与F8键的区别是,若当前执行的指令是CALL指令,则F7将跟踪进入被调入的子程序,而F8则把CALL指令及其调用的子程序当作一条完整的指令,要执行完子程序才停在CALL指令的下一条指令上。
本程序由三个子程序组成,也可对三个子程序分别调试。调试每一个子程序时,可通过修改IP指针来从每一个子程序的第一条指令开始单步运行,方法如下:将可执行文件调入TD中,查看代码区中每一个子程序的第一条指令的地址,然后按Tab键选择寄存器区为当前区域,将光标移到IP寄存器,直接键入子程序第一条指令的地址(如图2-2所示),在键入的同时屏幕上会自动弹出编辑输入窗口,最后按OK确认。以后就可用F7或F8键单步执行指令了, 根据需要,也可以修改相关寄存器的内容来验证程序的正确性。
图2-2 将执行文件调入TD进行调试(0023H时string子程序第一条指令的地址)
3.5 编程提示、实验程序与框图
按照程序的功能可将程序设计为一个主程序和三个子程序来完成:
子程序一string:通过DOS调用来等待键盘键入十进制数,若键入0~9以外的字符则退出该子程序(也可以由程序设定按某一特定键,如ENTER键,退出该子程序)。同时,子程序将键入的十进制数的位数作为子程序的出口,结果放到一个通用寄存器中(如CL)。
子程序二num:将通用寄存器(如CL)中的十制数的位数在屏幕显示,过DOS调用由高位到低位逐位显示,十进制数位数最大为99位。
子程序三crlf:采用DOS调用,实现回车换行。
主程序框图
根据主程序框图编写主程序
data segment
str1 db Please enter data,0dh,0ah,$
str2 db The number of the data is,0dh,0ah,$
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
repeat: ……完成主程序
jmp repeat
2.键入十进制数子程序及框图
string proc near
mov cl,0 ;CL清零,存放十进制数的位数
key: mov ah,1
int 21h 图2-3
文档评论(0)