汇编实验一 查看CPU和内存,用机器指令和汇编指令编程


 

实验结论

实验任务一:

(1)A命令将程序段写入1000:0开始的内存单元中,然后用U命令查看写入的代码段反汇编结果

 

 

(2)r命令改写cs:ip地址,再用r命令查看一下,用t命令运行代码

 

每次运行t命令,程序运行一行代码,同时cs:ip地址自动偏移指令长度的地址

实验任务二:

(1)A命令将程序段写入2000:0开始的内存单元中

此时我们注意到,代码中jmp 2000:0003的效果使得代码形成了一个循环,每次循环翻倍ax中的值,所以我们可以用它来计算28次方

(2)修改cs:ip值并用t命令运行程序

 

最后ax的结果为0100,即16的平方,28次方

实验任务三:

(1)d命令查看FFF0:0开始的内存地址,尝试寻找生产日期

 我们明显注意到最后一行存在着生产日期为01/01/92

(2)尝试改写生产日期

  此时我们发现并没有成功改变,这是因为从C0000FFFFF的内存地址都属于ROM,不能修改其内容

实验任务四:

(1)向从B8100H开始的单元中写入数据

(2)尝试更改输入的数据和更改数据的地址

 最终我发现,每次输入数据,屏幕右上都会出现一个字符,再次输入数据,字符颜色会改变。第一个数据决定字符形状,第二个数据决定颜色,而改变更改的地址决定出现字符的位置。这是因为A0000BFFFF的内存地址属于显存,更改会改变屏幕显示。

 

实验总结与体会

 一、通过本次实验,可以熟练掌握了debug工具几项命令的基本使用:

 

  1r命令查看和修改寄存器中的内容(注意不能直接修改段寄存器)

 

2e命令改写内存单元中的内容(既可以写入数据也可以写入指令,因为它们实际上是一样的)

 

3d命令查看内存中的内容

 

4u命令进行反汇编将内存中的内容解释为对应的汇编指令

 

5t命令执行cs:ip处的命令

 

6a命令以汇编的方式向内存写入指令

 

二、掌握了内存单元的分配和意义:

 

000009FFFF的内存地址属于主储存器地址空间

 

A0000BFFFF的内存地址属于显存

 

C0000FFFFF的内存地址都属于ROM

 

修改显存地址中的内存内容会改变屏幕显示,无法修改ROM地址中的内容


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM