汇编语言实验1 用机器指令和汇编指令编程
2021-03-18 15:28
标签: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意味着什么?初始时栈顶和栈底分别是? 显然初始时栈顶和栈底为2000:0010 2)基于单步调试观察到的变化,给出你对此的思考及可能原因分析 通过单步调试以及查阅资料,知道DOS系统中只有一个栈,系统会用该栈暂存相关数据,因此内存单元中的值会被修改。 汇编语言实验1 用机器指令和汇编指令编程 标签:info enter image 只读 play 输出 利用 汇编 width 原文地址:https://www.cnblogs.com/xywei0905/p/13794851.html四、实验结论
1. 教材实验1(P45)
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器的内容变化
(2)将下面3条指令写入从2000:0开始的内存单元中,利用这三条指令计算2的8次方
(3)查看内存中的内容
(4)向内存从B8100H开始的单元填写数据
2. 教材实验2(P74)
(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际情况填空
(2)进行以下实验,并分析:为什么2000:0~2000:f中的内容会发生改变?
mov ax, 2000 ; 将2000H送至ax寄存器
mov ss, ax ; 将ax寄存器的值送至ss栈顶段地址寄存器
mov sp, 10 ; 将0010H送至sp栈顶偏移地址寄存器
文章标题:汇编语言实验1 用机器指令和汇编指令编程
文章链接:http://soscw.com/index.php/essay/65839.html