一、实验结论
1.教材实验1结论
实验任务(1)
使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。
机器码 | 汇编指令 |
b8 20 4e | mov ax,4E20H |
05 16 14 | add ax,1416H |
bb 00 20 | mov bx,2000H |
01 d8 | add ax,bx |
①使用e命令将指令写入内存:
用e命令向从1000:0开始的内存单元写入机器码,用R命令查看CPU中寄存器状态,此时CS:IP指向073F:0100。
在使用t命令执行之前,必须先用r命令修改CS、IP中的内容,从而使CS:IP指向1000:0。
使用t命令单步调试写入的指令,CPU执行CS:IP指向的指令。
②使用a命令将指令写入内存:
用a命令,从一个预设的地址开始输入指令,在给出的起始地址后按Enter键表示结束。
用t命令单步调试。
实验任务(2)
将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
mov ax,1 |
add ax,ax |
jmp 2000:0003 |
使用a命令,以汇编语言向从2000:0开始的内存单元中写入指令,再使用r命令修改CS、IP中的内容。
对于单步调试较多的部分,只截取调试开始和调试出正确结果的部分。
调试开始部分:
调试出正确结果部分:
实验任务(3)
查看内存中的内容。
PC机主板上的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某几个单元中,请找出这个生产日期并试图改变它。
使用d命令查看,找到生产日期位于FFF0:00F5~FFF0:00FC,得知生产日期为1992年1月1日。
尝试使用e命令修改生产日期。
修改后再使用d命令查看日期并没有发生改变,所以修改失败。C0000~FFFFF是各类ROM地址空间,写入数据是无效的,相当于改写只读存储器中的内容。
实验任务(4)
向内存从B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
向内存从B8100H开始的单元中填写数据,右上角出现了四个不同的图案:
只改变填写的数据,图案所在位置不变,但是图案的样式发生变化:
只改变填写的地址,屏幕中没有出现图案:
本以为结果应该是屏幕中出现位置不同但是与第一次结果相同样式的图案。通过阅读1.15节,得知从A0000~BFFFF的内存单元是显存地址空间,向显存中写入数据,这些数据才会被显示卡输出到显示器中。
教材实验2结论
汇编指令 | 功能 |
mov ax,2000 | 将数字2000H存入寄存器ax中 |
mov ss,ax | 将存在寄存器ax中的数字2000H存入栈段寄存器ss中 |
mov sp,10 | 将数字10H存入栈地址寄存器sp中 |
mov sp, 10意味着安排2000:0000~2000:000F为栈空间,初始化栈顶。
初始栈顶为2000:0010,初始栈底为2000:0010。