实验一

Debug环境下的内存操作与指令执行
本文详细记录了在Debug环境下进行内存操作和指令执行的过程,包括使用A、D、U、E、T等命令进行内存写入、查看、反汇编、执行等操作,以及如何计算2的8次方并解决CS、IP值不一致的问题。

实验结论

1.使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。

用A命令将指令写入内存:

用D命令查看:

用U命令反汇编查看机器指令:

用E命令写入内存:

用T命令执行:

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

mov ax,1

add ax,ax

jmp 2000:0003

用A命令写入内存,修改cs,IP的值:

执行一系列操作后,相当于加了一次自身,执行8个循环后得出结果:

3.查看内存中的内容:

生产日期为01/01/92

我试着改变这个日期但发现不知道如何操作。。。

4.向内存从B8100H开始的单元中填写数据,如:

-e B810:0000 01 01 02 02 03 03 04 04

填写不同的数据:

改变填写的地址:

实验总结与体会

通过这次实验,我学会了在debug环境下调试,用命令在内存中写入、编辑、执行、显示指令。

同时我也改正了一个问题:写入指令后没有将CS、IP保持一致,导致t命令执行时指令不改变(这个问题浪费了我好多时间啊!!!)

 

转载于:https://www.cnblogs.com/gemini233/p/9844819.html

实验1 DEBUG使用 1、实验目的 掌握DEBUG常用命令的使用;熟悉8086CPU内部有多少寄存器;掌握访问段式存储器结构地址的表示方法。 2、实验内容 将数据段中的两个数求和,结果保存在数据段中。源程序、机器语言程序如下: CS:0100 Al 00 00 MOV AX,[0000] CS:0103 03 06 02 00 ADD AX,[0002] CS;0107 A3 04 00 MOV [0004],AX CS:010A CB RETF 数据段内容如下: DS:0000 2301 2500 ;两个已知数 3、实验步骤 (1)用E命令键人上述机器语言程序和数据段的初值。 —E DS:000 2301 2500 —E DS:006 2A 2A 2A (2A为*标记,是为便于查看数据段内容而设置) —E CS:100 A1 00 00 03 06 02 00 —E CS:107 A3 04 00 CB (2)用D命令检查数据段、代码段内容。 —D DS:0 —D CS:100 (3)用T命令逐条执行上述程序,注意观察每条指令执行后相应寄存器的变化。 (4)用U命令反汇编本程序。 —U 100 10A (5)用R命令修改IP的内容为0100重新执行上述程序。 —R IP 显示:IP 010A :0100 (6)用G命令运行程序。 —G =CS:0100 107 观察:IP=AX= —G =CS:0100 10A 观察:IP=AX= 4、实验思考题 (1)用A命令输入源程序: CS:0100 MOV AX,FFFF STC 0104 MOV DS,AX MOV BX,DS MOV ES,BX MOV CX,ES MOV SS,CX MOV DX,SS MOV SP,DX MOV BP,SP MOV SI,BP MOV DI,SI JNB 012l XOR AX,DI JNZ 0125 CLC JMP 0104 0121 OR AX,DI JZ0100 0125 HLT (2)用T命令单步执行上述程序。观察结果,并注意标志寄存器的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值