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

1. 预备知识:Debug的使用

(1)什么是Debug?

Debug是DOS、Windos都提供的实模式(8086方式)程序的调试工具。可以使用它查看CPU各种寄存器中的内容、内存的情况和在机器码级别跟踪程序的运行。

(2)我们用到的Debug功能。
  • R命令查看、改变CPU寄存器的内容
  • D命令查看内存中的内容
  • E命令改写内存中的内容
  • U命令将内存中的机器指令翻译成汇编指令
  • T命令执行一条机器指令
  • A命令以汇编指令的格式在内存中写入一条机器指令
(3)进入Debug
(4)R命令

左下角的073F:0100表示CS:IP所指向的内存单元,其此处的机器码为0000,对应的汇编指令为ADD [BX+SI],AL。右下角指令的含义后续再说。

R命令可以修改寄存器(包括CS:IP)的内容:

(5)D命令

查看内存10000H出的内容,则可以d 段地址:偏移地址的格式来查看

(6)E命令

可以用E命令改写内存中的内容

  • 一次更改多个
  • 提问式更改
  • 还可以写入字符,字符串
(7)E命令向内存写入机器码,U命令查看内存中机器码的含义,T命令执行内存中的机器码
  • 查看机器码含义
  • 将CS:IP指向改为1000:0
  • T命令执行

    注意AX,CX的值和CS:IP的指向
(8)A命令以汇编指令形式写入


使用U命令查看写入:

2. 实验任务

(1)使用E和A命令写入内存,并用T命令执行,观察寄存器的内容

(2)将以下指令写入内存单元,并计算2的8次方
mov ax,1
add ax,ax
jmp 2000:0003

答:

  1. 将以上命令写入2000:0的内存单元中,使用U查看:

  2. 更改CS:IP的内容,使其指向2000:0000

  3. 执行过程分析(注意:ax中的值为16进制)

  • 第一次T,ax=1
  • 第二次T,ax=2
  • 第三次T,ax=2,CS:IP2000:0005变为2000:0003
  • 第四次T,ax=4
  • 第16次T,ax=100(10进制表示为256,即2的8次方)
(3)查看主板ROM中的生产日期,并尝试修改

显示为1992年1月1日的原因:使用的DOSBox是一个模拟x86的模拟器,因此该日期也是虚拟的。又因为这是写在ROM中的,所以只读不能改。

(4)向内存中写入以下数据并观察
-e B810:0000 01 01 02 02 03 03 04 04

答:

  1. 写入数据并查看
    因为这段内存是显存,D命令查看内存内容时会刷新显存,因此无法用D命令查看。但是当我们写入数据时,屏幕会发生变化:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Mercurial

请我喝杯焦糖玛奇朵叭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值