[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.
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页