标签:info enter image 只读 play 输出 利用 汇编 width
使用e命令修改内存:
使用a命令修改内存:
单步调试:
开始部分:
结束部分:ax=0100H
从FFF00开始查看
生产日期应为01/01/92。尝试修改生产日期:
使用e命令修改内存后发现数据未被修改。由此可知生产日期在只读的地址空间,所以只能读取,不能写入。结合当前时间来看ROM的生产日期是虚拟的。
向B8100H地址写入数据后在窗口中出现了图像。翻阅教材1.15节得知A0000H~BFFFFH为显存地址空间。向这些内存单元写数据,就是向显存中写入数据,这些数据会被显示卡输出到显示器上。
首先使用 e 命令修改 内存单元0022:0~0022:f 中的数据,及修改后使用d命令查看是否正确写入
使用 a 命令输入汇编指令并填空
单步调试
push ax后2200:00FE中的内容
push bx后2200:00FC中的内容
push [4]后2200:00FE中的内容
push [6]后2200:00FC中的内容
与之前的理论填空结果相比较,可知结果正确
图 3.19 中使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,及修改后查看的部分
单步调试每一行汇编指令的截图。每一条指令单步调试后,都使用d命令查看2000:0~2000:f 的值。
观察上图,发现执行momv ss, ax与mov sp, 10后2000:0~2000:f中的内容发生改变,继续调试
观察上图可知,红框中内容没有发生改变,且其中073FH与CS寄存器的值相对应,①的值与AX寄存器的值相对应,②的值与IP寄存器的值相对应,③为栈中存储的数据。通过了解,知道DOS系统中只有一个栈,系统会用该栈暂存相关数据。
以文字方式陈述:
1)前三行汇编指令的功能是什么?特别是,mov sp, 10意味着什么?初始时栈顶和栈底分别是?
mov ax, 2000 ; 将2000H送至ax寄存器 mov ss, ax ; 将ax寄存器的值送至ss栈顶段地址寄存器 mov sp, 10 ; 将0010H送至sp栈顶偏移地址寄存器
显然初始时栈顶和栈底为2000:0010
2)基于单步调试观察到的变化,给出你对此的思考及可能原因分析
通过单步调试以及查阅资料,知道DOS系统中只有一个栈,系统会用该栈暂存相关数据,因此内存单元中的值会被修改。
标签:info enter image 只读 play 输出 利用 汇编 width
原文地址:https://www.cnblogs.com/xywei0905/p/13794851.html