[Hb-I] 查看CPU和内存 用汇编指令编程

《汇编语言·第三版》--王爽


1 Debug

Debug是DOS(Disk Operating System,磁盘操作系统)、windows提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。


用到的Debug参数:

  • r命令查看、修改CPU寄存器的内容;
  • d命令查看内存中的内容;
  • e命令改写内存中的内容;
  • u命令将内存中的机器指令翻译成汇编指令;
  • t命令执行一条机器指令;
  • a命令以汇编指令的格式在内存中写入一条机器指令。

 

2 Win 7 64位调debug

安装DOSBOX后打开DOSBOX,将debug.exe拷贝到F盘(某盘根目录),在DOSBOX中输入“mount c f:\”命令(此命令输入后有“Drive C is mounted as local directory f:\”,再输入“c:”回车。然后就可以去实现《汇编语言·第三版》—王爽P.45的实验任务了。


下载DOSBOX和debug.exe。


3 用debug向指定内存写入汇编指令并执行

(1) 查看CPU各寄存器中的值

Figure1. debug r命令查看CPU内各寄存器的值

CS:IP当前指向的内存地址为(073F0 +0100),此地址里面的二进制内容翻译成汇编语句为ADD [BX+SI], AL。


(2) 向指定内存地址输入汇编指令

向内存地址CS:IP = 073F:0000写入以下框内的汇编指令,并执行它们,观察CPU各寄存器值的变化。

mov        ax, 4E20H

add        ax, 1416H

mov        bx, 2000H

add        ax, bx

mov        bx, ax

add        ax, bx

mov        ax, 001AH

mov        bx, 0026H

add        al, bl

add        ah, bl

add        bh, al

mov        ah, 0

add        al, bl

add        al, 9cH


[1] 向指定内存地址写入汇编指令

Figure2. 用debug a命令向指定内存写入汇编指令

内存073F:0000 – 073F:001F段内保存了这些汇编指令。


[2] 修改CS:IP内容

CS:IP内的内容代表即将访问的内存地址。要求将这段指令写入起始地址为CS:IP = 073F:0000的段内,那么只需要修改IP的值即可:

Figure3. 修改IP的值

[3] 执行汇编指令

在[2]后,CS:IP指向内存073F:0000即刚输入汇编指令的首地址。

Figure4. 用debug t命令执行汇编指令

4 查看内存中的内容

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

Figure5. 修改ROM内容
用debug e命令修改FFF0:0050内容无效,因为这个地址表示ROM的地址,是只读的。

5 向内存从B8100H开始的单元中填写数据

Figure6. 向B8100内存地址写入数据

B810:0000地址属显存部分,当向这个内存中写入数据时会显示到屏幕上来。


8086PC机内存地址空间分配:

  • 00000 ~ 9FFFF:主存储器地址空间(RAM);
  • A0000 ~ BFFFF:显存地址空间;
  • C0000~ FFFFF:各类ROM地址空间。


[2014.11.18 - 19:52]
R《Hb》Note Over.
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值