实验1 用机器指令和汇编指令编程
P45实验
任务1
(1)使用E命令修改内存数据并使用反汇编看汇编指令是否匹配

(2)使用A命令直接写入汇编指令

(3)使用t命令分布执行指令,确保cs存储的就是我们期望的代码段的段地址,ip存储的也是我们期望的开始偏移地址

任务2:
(1)使用a命令写入3条指令

(2)确保cs存储的就是我们期望的代码段的段地址,ip存储的也是我们期望的开始偏移地址

(3)使用t命令分布执行指令

发现因为jmp指令程序陷入了死循环
任务3
(1)使用d命令查看内容,发现从00f5处出现了日期

(2)使用e命令进行修改,发现并没有任何变化,说明该地址内容只能读,不能写

任务4:使用e命令写入数据,屏幕上出现了有趣的图案,说明B810:0000开始是显示缓冲区,所以在里面写的数据会被读取并解析成相应的屏幕信息,所以就可以看到屏幕显示东西了


P74实验
任务1
(1)使用e命令修改并查看,发现修改正确
(2)使用a命令输入指令


(2)修改CS:IP到程序起始处:

(3)使用t指令分布执行




(3) 手推答案对比

任务2
(1) 编写程序段, 并进行一步步调试

(2)通过对栈数据的观察,我们发现栈还暂存了ax寄存器的数据。通过了解,知道了dos下系统只有一个栈,也就是说,外部操作未设置栈时,系统自己已经有一个栈在做暂存等相关工作了,当外部进行设置时,暂存等工作就发生在新栈中,因此没有进行push前系统已经先用来暂存相关数据了,这就是我们看到数据的原因。

实验总结
(1)SS和DS不能直接修改,需要通过通用寄存器进行中转
(2)DOS下栈只有一个,它不仅可以push和pop,还可以在执行指令时进行相关寄存器数据暂存。

浙公网安备 33010602011771号