实验一、用机器指令和汇编指令编程

一、教材实验一

教材实验1中「2. 实验任务」(P45)

• 实验任务(1)

机器码数据较多,只用前4行实验即可。
用t命令和a命令两种方式,写入内存。用t命令单步调试。附上实验截图。

• 实验任务(2)

附上a命令写入和t命令单步调试实验截图。对于单步调试较多的部分,只截调试开始,和调
试出正确结果的部分即可。 
 
 
 
 
• 实验任务(3)
 
附上在debug里实验的截图,并且基于实验结果,作必要的文字说明
 
这个PC机主板上的ROM中写有的一个生产日期是1992/01/01。debug中的e命令可以用来改写内存中的内容,但是这里却没有改变。根据教材第一章中的1.15节得知,日期信息位于ROM只读存储器中,所以用e命令对他进行改写的操作是无效的。
 
• 实验任务(4)
 
附上在debug里实验的截图,并且基于实验结果,作必要的文字说明 
 

 地址不变改数据:

 数据不变改地址:

 

  地址不变改数据会在相同的地方出现不同的图像, 数据不变改地址会在不同的地方出现相同的图像。向地址A0000~BFFFF的内存单元中写数据,就是向显存中写入数据,这些数据会被显示卡输出到显示器上。

 

二、教材实验二

教材实验2中「2. 实验任务」(P74)
 
• 实验任务(1)
① 截图记录:使用 e 命令修改 内存单元0022:0~0022:f 中的数据,及修改后查看是否正确
写入的操作
 
② 截图记录:使用 a 命令输入的 p74 指令
 
③ 截图记录:每一行指令单步调试(如单步调试步骤多,可分屏截图,但不要有遗漏)

 

 

④ P74 中指令执行后各个寄存器填空结果,以在文档中手工标注或手机拍照截图方式复制在
文档中。 对于③单步调试的观察,与理论上分析的结果进行比较,检验是否一致。如不一
致,分析原因。 

 

 

• 实验任务(2)

① 截图记录图 3.19 中使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,
及修改后查看的部分
 
② 单步调试每一行汇编指令的截图。每一条指令单步调试后,都使用 d 命令查看
2000:0~2000:f 的值。观察每一条指令执行后相关寄存器值的变化,及 2000:0~2000:f 单元
值的变化,并思考原因。

 

DOS系统中只有一个栈,系统用该栈暂存相关数据。debug的t命令在执行mov ss,ax时,下一条指令紧接着被执行。

以文字方式陈述:
① 前3行汇编指令的功能,特别是,mov sp, 10意味着什么?初始时栈顶和栈底分别是?
mov ax,2000    将2000H送至ax寄存器
mov ss,ax         将ax寄存器的值送至ss栈顶段地址寄存器
mov sp,10         将0010H送至sp栈顶偏移地址寄存器
初始时的栈顶和栈底为:2000:0010
② 基于单步调试观察到的变化,给出你对此的思考及可能原因分析
DOS系统中只有一个栈,系统用该栈暂存相关数据,所以内存单元的值会改变。
posted @ 2020-10-13 19:34  GTOTHED  阅读(135)  评论(3)    收藏  举报