实验一 查看CPU和内存,使用机器指令和汇编指令编程

试验任务

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

(1)首先用e命令将机器码写入内存

再使用u命令反汇编查看汇编指令

然后使用rcs 和 rip改变CS:IP的指向

接着使用t命令一直执行得出结果

结果为 ax=0002 bx=4026

(2)使用a命令写入汇编指令

使用t命令执行

结果为 ax=0002 bx=4026

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

mov ax,1

add ax,ax

jmp 2000:0003

执行结果

结果为 ax=0100

3、查看内存的内容

PC主机板上的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某几个单元中,请找到这个生产日期并改变它

我们使用d命令查看内存空间,发现生产日期在FFF0:00F5上

然后我们使用e命令试图改写它,但未成功,原因是ROM为只读存储器不能被修改

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

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

 

屏幕上显示出4个不同颜色不同形状的图案,由此可知一个图案是由两个字节控制的

我们将第二个字节改为02,则第一个图案的颜色改变了,可见每两个字节中的后一个字节是控制图案的颜色

我们再将第一个字节改为02,则第一个图案的形状改变了,可知每两个字节中的前一个字节可以控制图案的形状

之后我们改变一下填写的地址,发现第二组与第一次执行时相同的图案在屏幕的其他地方浮现了

总结与体会

1、在第一个实验中使用e命令写入机器码后,使用t命令执行时发现CS:IP地址与我写入的不符,于是我使用了rcs和rip改变了CPU当前要读取、执行的内存地址。

2、第二个实验中jmp指令可以跳到某一个内存地址,由此实现循环计算。

3、第三个实验我发现我们无法改变ROM中的数据,原因是ROM为只读存储器不能被修改。

4、第四个实验中之所以在屏幕上显示了图案的原因是A000-BFFF为显存地址空间,当我们向显存输入数据并执行后,这个数据就会被输出到屏幕上,显示出我们实验中出现的图案。

猜你喜欢

转载自www.cnblogs.com/-Anguvia-/p/9746067.html