系统相关
首页 > 系统相关> > 汇编语言(第3版,王爽著):实验1 查看 CPU 和内存,用机器指令和汇编指令编程

汇编语言(第3版,王爽著):实验1 查看 CPU 和内存,用机器指令和汇编指令编程

作者:互联网

一、预备知识:Debug 的使用

(1). 什么是 Debug?

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

(2). 我们用到的 Debug 功能

关于在 Windows 中使用 Debug,请看我的上一篇文章:
64 位 Windows 下配置汇编用的 Debug 环境(win7和win10都适用

(3). 命令的使用

  1. R 命令

功能:
使用 R 命令查看、改变CPU寄存器的内容

用法:
r 寄存器名称

使用 R 命令修改寄存器的内容

  1. D 命令

功能:
使用 D 命令查看内存中的内容

用法:(默认查看 128 个内存单元的内容)
d 段地址:偏移地址
或指定查看范围:
d 段地址:起始偏移地址 结尾偏移地址

使用 D 命令查看内存 073f:0100 处的内容

  1. E 命令

功能:
使用 E 命令改写内存中的内容(也可视为写入机器指令)

用法一:
e 段地址:起始偏移地址 数据 数据 数据 ······
用法二:(以提问的方式来逐个地修改从某一地址开始的内存单元中的内容,以从 073f:10 单元开始为例)
1. 输入 e 073f:10,按 Enter 键
2. 在光标的 . 后面输入想要写入的数据(输入数据然后按空格;单单按空格则视为不修改,跳到下一单元)
3. 希望修改的内存单元改写完毕后,按 Enter 键,E 命令操作结束

使用 E 命令改写内存中的内容

  1. U 命令

功能:
使用 U 命令查看内存中机器码的含义(将内存中的机器指令翻译成汇编指令)

用法:
u 段地址:偏移地址

机器指令          对应的汇编指令
b80100             mov ax, 0001
b90200             mov cx, 0002
01c8                 add ax, cx

用 U 命令将内存单元中的内容翻译为汇编指令

  1. T 命令

功能:
使用 T 命令执行 CS:IP 指向的机器指令

使用 T 命令执行 CS:IP 指向的指令

  1. A 命令

功能:
使用 A 命令以汇编指令的格式在内存中写入一条机器指令

前面使用了 E 命令写入机器指令,这样写起来很不方便,也不直观,最好能直接以汇编指令的形式写入指令。
使用 A 命令从 073f:0f 开始的内存单元中写入指令

二、实验任务

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

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

实验1:利用三条指令计算

2. 查看主板内存中的内容

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

PC 机主板上的 ROM 写的生产日期是:01/01/92
由于内存 FFF00H~FFFFFH 属于 ROM,只能读,不能写,所以写入数据的操作是没有结果的

3. 向内存 B8100H 开始的单元中填写数据

// 如:
e b810:0000 01 01 02 02 03 03 04 04

请先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。

观察到的现象

可以看到屏幕出现了些彩色的图案,这些是写入的数据对应的 ASCII 码字符;
而 b810:0 所对应的内存地址是显存地址空间(如下图所示),所以往显存中写入信息,显卡会将它输出到显示器上。

8086PC 机内存地址空间分配

标签:写入,命令,地址,内存,Debug,CPU,王爽,机器指令
来源: https://www.cnblogs.com/wanghuizhao/p/16313070.html