汇编语言程序设计实验1 汇编环境与 DEBUG 调试

本文通过实例介绍了汇编语言的基本概念,包括程序格式、段定义、指令等,并详细讲述了如何使用MASM进行编程、链接以及Debug工具进行程序调试,涉及INT21系统调用的处理方法。
摘要由CSDN通过智能技术生成

【实验内容】

  1. 通过第2章两个简单实例认识汇编语言程序,初步了解程序格式;段定义;标号;DOS系统功能;操作数;指令;说明语句等作用。
  2. 掌握汇编语言程序从设计到形成可执行程序文件的方法和步骤,即编辑、汇编、连接。了解汇编语言的系统工作文件和工作环境。了解汇编程序的连接程序的作用。理解列表文件内容。
  3. 初步了解程序的运行和调试方法。学会使用Debug主要命令和常用的DOS命令。

【实验问题与解决】

【1】编辑第3章两个简单实例,通过汇编、连接

1. 编写HELLO.ASM

2. 在dosbox中用MASM和LINK命令对程序进行汇编和链接

可以看到生成了汇编的obj文件和连接的exe文件

2. 用同样的方式编写单个字符的键盘输入与显示输出的程序,并汇编、连接

测试两个程序,结果符合预期

【2】用Debug对HELLO程序进行调试

(1)该程序在内存中的起始地址是:076B:0000;结束地址是:076B:000F;共占16个字节

(2)程序中定义的字符串 Hello World!$ 在内存中的起始地址是:076A:0000

     使用D命令显示该字符串:

    

     使用G命令运行对应程序段并显示该串:

(3)用P命令单步执行程序,查看相关寄存器的内存:

执行MOV DS,AX后,DS由075A变为076A;

执行MOV AH,09后,AX由076A变为096A;

执行MOV AH,4C后,AH由096A变为4C6A

【3】

(1)用A命令从地址076B:000CH(语句MOV AH,4C)处输入汇编语句:

使用G命令运行,可以看到程序输出了两遍Hello World,符合预期。

(2)使用带断点的G命令显示字符串:

(在新开的debug中实验,以免被(1)的修改干扰)

在076B:000E中设置断点:

可以看到执行-g E后程序在调用INT 21结束程序前停下;再运行-g后程序结束。

(3)用T命令跟踪HELLO.EXE,写出每一步执行后,相关寄存器的内容。

寄存器的相关内容如上图所示。

(4)用T命令跟踪程序,在跟踪执行INT 21时发现在继续执行一个奇怪的程序(如上图)。

解决方法:在遇到系统调用指令(INT 21)时将T换成P,如下图所示。

说明T遇到系统调用语句会出错。此时应该改用P语句继续单步执行。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值