实验一 查看CPU和内存 用机器指令和汇编指令编程
|准备工作
1.下载安装汇编相关软件
64 位 Win7 及以上,可以通过虚拟 dos 工具来实现「Masm for Windows 实验环境 2015」
2.debug工具用法
Debug是DOS、Windows都提供的实模式(8086模式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
3.常用的Debug功能可通过在debug模式下输入“?”查询。如图:
本次实验需要用到的命令,如图:
|实验结论
一、熟悉Debug程序及各个指令
1.运行debug程序
2.用r命令查看CPU中各个寄存器的内容
3.用r命令修改寄存器ax中的内容,并用r命令查看更改是否成功
4.用r命令修改CS和IP的内容,并用r命令查看是否修改成功
5.用d命令查看内存1000:0和1000:9处的内容
可以发现,DEBUG列出了从指定内存单元开始的128个内存单元的内容。在使用了d 1000:0之后,DEBUG列出了1000:0~1000:7F中的内容。
左边是每行的起始地址;中间是从指定内存单元开始的128个内存单元的内容,以十六进制格式输出;右边是每个内存单元中的数据对应的可显示的ASCII码字符。
也可以指定d命令的查看范围,采用“d 段地址:起始偏移地址 结尾偏移地址”,例如“d 1000:0 9”可以查看1000:0~1000:9中的内容。
6.用debug的e命令改写1000:0~1000:3内存中的内容
也可以用e命令向内存中写入字符
7.用e命令向内存中写入机器码,用u命令查看内存中机器码的含义,用t命令执行内存中的机器码。
可以发现ip的值自动发生了变化,可用t命令继续执行
8.用debug的a命令以汇编指令的形式在内存中写入机器指令(两种语法格式)
二、p45实验任务
1.使用DEBUG,将程序段写入内存中,逐条执行,观察每条指令执行后CPU中相关寄存器中的内容变化。
(1.用e命令写入机器码
(2.用a命令输入汇编指令
(3.使用t命令执行
第十四次使用t命令时结果
实验过程中ip的值每一步都会指向下一条汇编指令的内存单元。
2.将下面三条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
MOV AX,1
ADD AX,AX
JMP 2000:0003
(1.用a命令输入汇编指令
(2. 用r命令修改cs和ip的值
(3.用t命令单步执行第16次得到2的8次方16进制格式(ax=0100)。
3.查看内存中的内容
(1.通过d命令查找
(2. 用e命令尝试修改生产日期,并通过d命令查询
修改日期失败,说明ROM只读存储器中的,无法改写。
4.向内存从B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
观察现象
写入不同的数据
改变填写地址
可以发现写入不同的数据,以及写入不同的内存单元,结果都会有所不同。
|总结与体会
通过对第一章,第二章的学习,我对汇编语言有了深入的了解,接触并深入了解了一部分寄存器,从寄存器的角度理解了CPU的工作原理。初次学习并掌握了mov,add,jmp等汇编指令。
在实验1中,首先学会了DEBUG DOSBOX环境的配置,学会了多种debug命令。我体会到了计算机内部的神奇,接触到了最底层的机器码。也尝试了用机器码和汇编指令编程。
感觉自己已经具有了一点点汇编语言编程的思维,也对之后的课程产生了浓厚的兴趣。