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

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

试验任务

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

  • 首先用e命令将机器码写入内存

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

img

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

img

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

img

结果为 ax=0002 bx=4026

  • 使用a命令写入汇编指令

img

使用t命令执行

img

结果为 ax=0002 bx=4026

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

mov ax,1
add ax,ax
jmp 2000:0003

img

执行结果

img

结果为 ax=0100

3.查看内存的内容

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

img

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

img

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

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

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

img

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

img

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

img

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

img

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

总结与体会

  • 在第一个实验中使用e命令写入机器码后,使用t命令执行时发现CS:IP地址与我写入的不符,于是我使用了rcs和rip改变了CPU当前要读取、执行的内存地址。
  • 第二个实验中jmp指令可以跳到某一个内存地址,由此实现循环计算。
  • 第三个实验我发现我们无法改变ROM中的数据,原因是ROM为只读存储器不能被修改。
  • 第四个实验中之所以在屏幕上显示了图案的原因是A000-BFFF为显存地址空间,当我们向显存输入数据并执行后,这个数据就会被输出到屏幕上,显示出我们实验中出现的图案。
原文地址:https://www.cnblogs.com/-Anguvia-/p/9746067.html