• 实验一 查看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为显存地址空间,当我们向显存输入数据并执行后,这个数据就会被输出到屏幕上,显示出我们实验中出现的图案。
  • 相关阅读:
    java LinkedHashSet
    java hashcode,equals方法必须重写
    java Set ,HashSet
    java ArrayList嵌套ArrayList
    java 基本数据类型数组与集合之间相互转换
    java 可变参数 和 静态导入
    java 三种迭代 删除元素
    java 泛型的通配符
    java 泛型接口
    java 泛型类,泛型方法
  • 原文地址:https://www.cnblogs.com/-Anguvia-/p/9746067.html
Copyright © 2020-2023  润新知