汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

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

 

实验目的

了解什么是Debug,以及Debug中需要用的一些功能

R:查看、改变CPU寄存器的内容

D:查看内存中的内容

E:改写内存中的内容

U:将内存中的机器指令翻译成汇编指令

T:执行一条机器指令

A:以汇编指令的格式在内存中写入一条机器指令

实验内容及过程

(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。

 

用e命令将指令写入内存,之后通过d命令查看内存中的机器代码,验证正确性。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

u查看机器指令对应的汇编指令

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

用a命令将指令写入内存,同样使用d命令查看机器代码的正确性。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

写好程序之后通过t命令单步执行,查看各个寄存器的值,根据题目要求,记录CS:IP的指向,具体结果的可以从下面的截图中获得。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

用a命令在2000:000处写出指令,然后用r命令来修改CS为2000,IP为0,然后用t命令执行,直到ax中的值为10

因为默认的是十六进制,所以ax中的0010实际代表十进制的16

写入指令:

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

执行

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

(3)查看内存中的内容。

查看生产日期

根据题目可以看到生产日期存在内存FFF00H~FFFFFH中的某个单元,查看该内存。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

可以在最后一行看到生产日期01/01/92在地址ffff5~ffff12处,下面用e进行修改;

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

因为是ROM,所以日期是不会改变的

(4) 向内存从B8100H开始的单元中填写数据,如:

-e B810:0000 01 01 02 02 03 03 04 04

请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

可以看到,向B8100H单元中输入这些数据后,可以观察到界面上出现了一些彩色的图案,已用红色方框标识。

接着在相同的地址内填写不同的数据,可以看到出现了颜色不同的数字。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

下面改变输入数据的地址,可以看到显示的内容不变,位置改变了。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

在改变地址的基础上,改变写入的数据,可以发现位置不变,内容改变,并且相对于上一步来说,将04的位置改为08,发现对应位置的内容的颜色也不一样了。

汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程

综合以上结果可以知道,这一段内存为显存,是RAM,可以改变其值在屏幕上的显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII码,后一个(高)为要显示的颜色。

 

实验总结

         通过这次实验,对debug的一些基本操作有了基本是了解,知道了各个指令所做的功能,如何写入机器代码和汇编代码,以及查看所需要的内容,并且知道了某些内存中存储的内容,以及它们中的内容是否可变等知识。这对以后进行更深入的学习是非常有帮助的。

--------------------- 

作者:ln8429 

来源:CSDN 

原文:https://blog.csdn.net/ln8429/article/details/46763157 

版权声明:本文为博主原创文章,转载请附上博文链接!

上一篇:Linux下查看CPU型号,内存大小,硬盘空间的命令


下一篇:sublime前端编辑器入门与个人使用经验分享