王爽汇编语言答案汇集.pdf
文本预览下载声明
实验一 debug 的使用
(1)答:
仅举第一行:
机器码 汇编指令
b8 20 4e mov ax,4e20h
答:
1)进入debug,在写入机器码和汇编指令之前,先用 r 命令查看 cpu
中各个寄存器(可能回发生变化的寄存器)的情况如下
AX=0000 CS=13c3 IP=0100
2)用 E 命令写入机器码,格式如:E 13c3:0100 b8 20 4e
或用 A 命令写入汇编指令,格式如:A 13c3:0100 mov ax,4e20 [注:
这里不能用 mov ax,4e20h;debug 中默认数据为十六进制]
3)用 t 命令单步运行,之后可以看到变化:AX=4E20 IP=0103
[注:由此可见我们可以用 debug 中的 t 命令单步跟踪程序,通过观察其中各个
寄存器的变化而发现程序中可能存在的逻辑错误]
(2)答:
进入 debug 后,首先把这三行指令按如下格式在 debug 中输入:
a 2000:0
2000:0000 mov ax,1
2000:0003 add ax,ax
2000:0005 jmp 2000:0003
然后修改其中 cs:ip,使之指向我们程序(代码段)的入口 2000:0000,
这里可以用 r 命令实现,具体实现如下:
r cs
CS 13c3
:2000
r ip
IP 0100
:0000
之后可以通过控制 jmp 2000:0003 的执行次数实现求 2 的 8 次方,具
体可以让 jmp 2000:0003 执行 8 次。
[实际上,这这里是死循环,只是在 debug 中可以通过逐条执行的机制控制程序
的随时终止;在后面我们可以通过寄存器 cx 和 loop 指令对循环进行控制,具体
见
第五章]
(3)答:
这里直接用 d 命令进行查看,具体格式:d FFFF:0000
之后可以在屏幕右侧看,类似08/06/04之类的时间信息即为生产日期,
可以用 a 命令试图修改,并用 d 命令查看修改是否成功,实际上是不能修改的,
因为ROM
是只读存储器,不能直接修改。
(4)答:
输入书中给出的程序后,可以在屏幕上看到不同色彩的奇怪字符,原因
是这样子的:
b800:0000 开始的一段内存空间是 8086pc 机显存地址空间,往其中填写
不同的数据时,可以对在屏幕上显示不同的内容,具体见 175 页的实验 9“根据
材料编程”,里面介绍了一些屏幕操作的知识。
debug 指令详解
一、DEBUG 概述
DEBUG 是在 DOS 状态下面供程序员使用的程序调试工具。它可以用来检查内存中
任何地址中的内容以及修改特定地址中的内容。DEBUG 还可以用于逐指令执行某
个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件
与磁盘扇区。此外,DEBUG 还可以用于读写端口中的数值。
在 DEBUG 状态下,所有数据都作为字节序列,可以用 DEBUG 把任何类型的文件读
入内存中。DEBUG 能够处理的数据为两种: 十六进制数和 ASC Ⅱ码,使用两位数
表示十六进制数据(0~9,A~F)。在DEBUG 中涉及内存中的数据时,要指定数据
所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。如果没有输入
地址,DEBUG 将假定为当前内存段,从位于地址 100H 的字节开始。前 100H 字节
保留给程序段前缀使用(称 PSP 结构,包含程序执行的各种信息),该区域用于
建立 DOS 与程序之间的联系。在 DEBUG 中,使用四位十六进制数表示地址(0~9,
A~F)。
DEBUG 输入数据时有两种方法: 提示方法和非提示方法。在提示方法下,输入要
求输入数据的命令,后跟保存数据的地址。执行后可以看到该地址中已有的内容
及一个冒号提示符。此时可以在提示符下输入一个新的值或者按下回车键或
显示全部