2024年5月2日发(作者:)

篇一:汇编 debug 实验报告

一、 实验目的、

学习查看cpu及存储器命令

二、 实验设备及环境

主流pc win7_x64

dosbox status window

三、 实验内容及步骤(截图并对图示进行必要的文字说明)

(1) 使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,cpu中相关寄

存器中内容的变化。

机器码 汇编指令 b8 20 4emov ax,4e20h 05 16 14 add ax,1416h bb 00 20 mov bx,2000h

01 d8 add ax,bx 89 c3 mov bx,ax 01 d8 add ax,bx b8 1a 00mov ax,001ah bb 26 00mov bx,0026h

00 d8 add al,bl 00 dc add ah,bl 00 c7 add bh,al b4 00 mov ah,0 00 d8 add al,bl 04

9c add al,9ch- 1 -- 2 -

命令:

作用:

结果:

mov ax,4e20 add ax,1416 mov bx,2000 add ax,bx将4e20h存入ax, 将ax+1416h存入

ax,a 将2000h存如bx, 将ax+bx的值存入ax, ax=4e20h x=6236h bx=2000h ax=8236h

- 3 -

mov bx,ax将ax的值存入bx, bx=8236h add ax,bx 将ax+bx的值存入ax,ax溢出, ax=046ch

mov ax,001a将001ah存入ax, ax=001ah mov bx,0026 将0026h存入bx, bx=0026h add al,bl

将al+bl的值存入al,ah=00h,al=40h,ax=0040h add ah,bl 将ah+bl的值存入

ah,ah=26h,al=40h,ax=2640h add bh,al 将bh+al的值存入bh,bh=40h,bl=26h,bx=4026h mov

ah,0 将0000h存入ah, ah=00h,al=40h,ax=0040h, add al,bl 将al+bl的值存入

al,ah=00h,al=66h,ax=0066h add al,9ch将al+9ch的值存入al,ah=00h,al=02h,ax=0002h,

(2) 将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

mov ax,1 add ax,ax

jmp 2000:0003

- 4 -- 5 -

篇二:debug 实验报告

微机实验报告

学院:物信学院

班级:电信一

学号:2

姓名:杨义

一.实验目的:

1. 熟练的掌握debug的常用命令,学会用debug来调试程序。 2. 深入了解数据在储存器中

的存取方法,了解堆栈中数据的压入与弹出方法。

3. 了解各种寻址方式,了解程序的执行方法。

二.实验要求:

1.实验前要做好充分准备,包括汇编程序清单,调试步骤,调试方法以及程序结果分析。

2.试验在debug上输入汇编语言指令,然后对程序进行调试分析。

三.实验内容:

1. 写出完成下列功能的指令序列

(1)传送20h到al寄存器 mov al , 20h (2)将(al)*2

mov al , 02hmul al

(3)传送25h到bl寄存器 mov bl , 25h (4)(al)*blmul bl 问最后结果(ax)=? ax=0940h2.

分别写出完成下列指令要求的指令 (1)将bx的低4位清零 and bx , f0h (2)将ax

的高4位置1 or ax , f0h (3)将dx的低4位取反; xor dx , 0fh (4)将cx的中间八

位清零 and cx , 0ff0h

(5)将ax中与bx中的对应位不相同的位均置1 xorax , bx

3.上机运行下面指令序列,分析运行后(ax)=?mov ax ,4312 mov cl , 8 sar ax ,cl dec

ax mov cx ,8 mul cxax=210.9h

4. 设ds=当前段地址,bx=0300h,si=0002h,请用debug的命令将存储

器偏移地址300-304h连续单元装入0ah 0bh 0ch 0dh 0eh。在de

bug状态下送入下面的程序,并用单步执行的方法,分析每条指令原源地址的形成过程?

当数据传送完毕时,ax中的内容是什么?

四.实验收获:

学会几种debug的几种重要的语言命令: r——显示和修改寄存器内容,篇三:实验一调试

程序debug的使用实验报告

南昌理工学院实验报告

二o一二 年 月 日

课程名称:微机原理与接口技术 实验名称:调试程序debug的使用班 级: 姓名: 同组

人:

指导教师评定:签 名:

【一、实验名称】

调试程序debug的使用

【二、实验目的】

1.掌握汇编程序的编辑,编译,连接和执行的全过程;

2.学习和掌握用 debug 调试程序的方法。

【三、实验内容和原理】

1.用编辑软件,输入以下汇编语言源程序:

dat segment mov al,b

mov z+1,aladb 20 ;(自定)

call sub1bdb 15 ;(自定)

ydb 3 dup(0) add word ptr y,axzdb 0,0 adc byte ptr[y+2],0 dat ends ret

sta segment stack starendp

dw 50 dup(?)sub1proc

sta ends mov al,z

cod segment mov ah,z+1

assume cs:cod,ds:dat mul ah

starproc far add word ptr y,ax push ds adc byte ptr[y+2],0 xor ax,ax ret

push axsub1endp

mov ax,datcod ends

mov ds,ax end star

mov ax,sta

mov ss,ax

mov al,a

mov z,al

mov z+1,al

call sub1

mov al,b

mov z,al

mov z+1,al

call sub1

mov al,a

mov z,al

2.通过编译,连接形成可执行文件;

3.用 debug 将可执行文件调入,并进行调试;

(1)用 d 命令观察数据区在内存中的具体内容,记录单元 a 和 b 的具体地址;

(2)用 u 命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置, 并记录

这个起始地址;

(3)用 t 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序

运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是 否正确;

(4)在子程序 sub1 的入口处设一断点,用 g 命令执行程序,在断点处观察堆栈的内容,比较

堆栈的内容和程序返回地址是否一致;

(5)用 e 命令修改单元 a,b 的内容,重新执行程序,并记录结果;

(6)用 m 命令和 a 命令对程序进行修改: 将主程序中最后两条指令 (add 和 adc) 修改为

一条 call sub1 指令,重新执行程序;

(7)退出 debug;

4.重新使用编辑软件,把源程序最后一句中的 star 去掉.再次生成可执行文件,并用 debug

调入内存.当使用 u 命令时,显示的结果与前一次(未加 star) 的结果有何不同?

【四、实验条件】

微型计算机一台 ,软件masm

【五、实验过程】

根据实验内容,按步骤完成。

【六、实验结果】

(1)u 命令对目标代码反汇编, 注意发现源程序的起始位置, 并记录这个起始地址。 答:

源程序起始地址:1512:0000h。

(2) d 命令观察数据区在内存中的具体内容,记录单元 a 和 b 的具体地址。

答:150a:0000h 是a的具体地址,150a:0001h 是b的具体地址。

(3) t 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致。得出程序运

行的结果:它们是写在什么单元,具体内容是什么,并判断结果是否正确。

答:由于单步调试的结果较多,在这里仅说几项以示情况。

① push ax 后观察得到ip值自加2。

② mov ds,ax 后ds 的值由14fah变成150ah。

③ z的偏移地址为0005h,而寻址z中的内容成为[0005h]。

所以结果一致正确。

(4) 在子程序 sub1 的入口处设一断点,用 g 命令执行程序,在断点处观察堆栈的内容,比较

堆栈的内容和程序返回地址是否一致。

答:ss = 150bh,ip = 0017h,和程序返回地址一致。

(5) 重新使用编辑软件,把源程序最后一句中的 star 去掉.再次生成可执行文件, 并用

debug 调入内存.当使用 u 命令时,显示的结果与前一次(未加 star) 的结果有何不同?

答:整个代码段仅有一条指令,add [bx+si],al。

由于把源程序最后一句中的 star 去掉,那么程序就不一定是从star开始,会造成程序混乱。

【七、实验结果分析、讨论】

掌握了汇编程序的编辑、编译、连接和执行的全过程,初步掌握了debug的使用。

【八、实验结论】

初步掌握了汇编程序的编辑、编译、连接和执行的全过程,学习了用 debug 调试程序的方法,

了解了另一种程序语言的编写。

感觉它比其他高级语言确实要复杂,但是能更一步体会计算机是如何操作的。