当前位置:首页 > 汇编-实验2-汇编语言环境及程序调试实验
实验2 汇编语言环境及程序调试实验
一、实验目的
1 掌握程序DEBUG调试方法;
2 理解汇编语言程序分段结构、段的定义、段寄存器的初始化; 3 掌握汇编语言程序如何返回DOS等; 4 掌握可执行文件的内存分配。
二、实验内容
1. 给定已知程序,阅读程序内容; 2. 应用DEBUG命令对程序进行调试。
三、程序内容
参考程序清单
DATA SEGMENT
W DW -304 X DW 1000 Y DW -12 Z DW 20 RESULT DW 2 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX
MOV AX,X ;被乘数X取到AX中 IMUL Y ;计算X*Y MOV CX,AX
MOV BX,DX ;X*Y转存到BX、CX MOV AX,Z ;Z取到AX中 CWD ;Z扩展到DX、AX中 ADD CX,AX
ADC BX,DX ;计算X*Y+Z SUB BX,220 (修改为SUB CX,220) ;计算X*Y+Z-220 SBB BX,0
MOV AX,W ;W取到AX中 CWD ;扩展到DX、AX中 SUB AX,CX
SBB DX,BX ;计算W-(X*Y+Z-220) IDIV X ;计算(W-(X*Y+Z-220))/X MOV RESULT,AX
MOV RESULT+2,DX ;送结果
MOV AH,4CH
INT 21H ;返回DOS CODE ENDS
END START
四、程序分析 五、汇编、链接
六、DEBUG调试:查看内存、寄存器,或查找程序逻辑错误
E:\\EMBEDD~1\\Masm>debug 文件名.exe
-u ;将汇编成机器指令的程序(如hello)重新反汇编成汇编语言程序,方便阅读 -d ;查看指定的内存内容,默认给出数据段的内容 -r ;查看或更改各个寄存器内容,可指定寄存器名 -t ;单步执行程序,可加数字表示连续执行若干步
-g ;连续执行程序直到结束,可加地址表示连续执行到何处暂停 -q ;退出调试环境
七、要求
1、分析程序实现的功能。
通过对代码的分析,这个程序实现的是计算(W-(X*Y+Z-220))/X的功能。
2、计算表达式的结果,即RESULT存储单元中应该存放的数据。
将W =-304、X=1000、Y=-12和Z=20带入(W-(X*Y+Z-220))/X,得商为11、余数为896,在存储器中存放的数据应为:0B 00 80 03。
3、运行程序,使用debug命令查询RESULT存储单元中存放的数据,并与自己计算的结果相比较。如果不同,则查找程序中存在的逻辑错误。
运行程序,使用debug命令查询RESULT存储单元中存放的数据为:5D 38 54 02。经过检查,发现错误为 SUB BX,220 ,应改为 SUB CX,220 。
4、将RESULT起始的4个字节的内容(商,余数)显示在屏幕上。(涉及到ASCii码转换)
八、实验总结
通过本次实验,我们主要学会了汇编语言程序DEBUG调试方法,理解并会读汇编语言程序、段的定义、段寄存器的初始化以及汇编语言程序如何返回DOS等;在此基础上慢慢学会如何去写汇编语言程序。
共分享92篇相关文档