实验一:查看CPU和内存,用机器指令和汇编指令编程
debug环境搭建:参考此文
assignment 1
- 用A命令向内存中写入汇编指令,用U命令查看
- 用R命令分别修改CS、IP寄存器,即CS:IP的指向,用T命令逐条执行
assignment 2
-
写入并查看指令
-
修改_CS:IP_指向
-
执行指令,计算 2 8 2^8 28 , 结果为 A X = 0100 H AX = 0100H AX=0100H
assignment 3
-
用D命令查找,最终在 F F F F 5 H → F F F F C H ( F F F F : 0005 → F F F F : 000 C ) FFFF5H \to FFFFCH(FFFF:0005 \to FFFF:000C) FFFF5H→FFFFCH(FFFF:0005→FFFF:000C)发现 d d / m m / y y dd/mm/yy dd/mm/yy字样
-
尝试用E命令修改,该操作失效,因为这是ROM
assignment 4
-
A
0000
H
→
B
F
F
F
F
H
A0000H \to BFFFFH
A0000H→BFFFFH对8086PC机是显存地址,往这个范围内的内存写入数据,会改变显示器上的内容,我们可以看见屏幕上出现了笑脸、爱心和钻石
实验二:用机器指令和汇编指令编程
assignment 1
- 用A指令向内存中写入汇编指令,用U指令查看
- 修改CS:IP使其指向代码段
- t命令逐步执行指令后查看AX、BX、SP寄存器内容
assignment 2
在使用T命令进行单步追踪的时候,产生了中断,为了保护现场,CPU将PSW、CS和IP依此入栈,导致了内存相关位置内容的改变