[工学]实验三 汇编语言程序设计综合实验2.doc

[工学]实验三 汇编语言程序设计综合实验2.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档