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

南京信息工程大学实验报告

实验(实习)名称 用机器指令和汇编指令编程 实验(实习)日期 2017-10-25  得分   指导教师 耿学华      

   计软院   专业  计科   年级  2017    班次   4  姓名   江漪雯     学号  20171308150         

一、实验目的

1. 掌握使用debug工具编写和调试汇编命令的方法

2. 掌握第1~2章所学的关于CPU、寄存器、内存的基础知识

3. 掌握第1~2章涉及的几条指令mov, add, sub, jmp的用法

二、实验准备

1. 复习教材第1~2章内容,完成教材内相关检测点

2. 结合教材实验1P35)及公邮文件中心→实验下的实验1辅助文档.pdf”学习debug工具用法。

三、实验内容

1. 教材实验1P35

1)练习教材P35-45「预备知识:Debug的使用」,学习debug启动、退出及常用指令用法;

2)在练习基础上,完成「2. 实验任务」

四、实验结论

实验任务 1

 E指令将机器码逐条写入到内存中,然后用U命令翻译。

可以发现每一行写完,会自动跳转到下一行,IP的值逐条增加,根据指令长度增加。

u指令进行翻译时,后面要加上要写入内存数据的CSIP的值,不然会显示默认CSIP中未写入数据的空数据值。

 T指令运行:

需要一条一条执行,在执行T命令之前必须使CS:IP指向0:200(即要写入的内存单元),即执行T命令之前执行R命令先查看原来的CSIP的值,然后通过rcsrip改变CSIP的值分别为0200.

 用A指令将汇编指令写入到指定的内存中,用T命令执行:

图1中我用A命令执行之后用D命令查看,由于没有指定CSIP的值导致查看错误

图2中我先用T命令逐条执行然后用D命令加0:200查看了汇编命令对应的机器码的值,右边是可显示的ASCII字符,“.”代表不可显示的数据。

可以看出,汇编指令和机器指令的差别在于指令的表示方法上。

实验任务 2

3条汇编指令写入到指定位置,计算28次方。

R命令查看,观察到汇编指令写入的段地址和偏移地址与CS IP不同,因为T指令令CPU执行CS:IP指向的指令,所以用R指令修改CSIP的值。

T指令逐条执行:

可以观察到,指令执行后,机器自动将IP改变,将CS:IP指向下一条指令。当寄存器AX中的值到0100时停止执行。因为28次方十进制中为256,十六进制中为100H.

 

实验任务 3

根据题目提示,用D命令查看内存FFF00H~FFFFFH中的数据,

-d fff0:0 ff是指从fff00开始查看,ff长度的内存。

可以观察到,生产日期为01/01/92,所对应的内存地址为FFFF5H~FFFFCH

E命令试图改变它,发现生产日期无法改变。

 

实验任务 4

向内存从B8100H开始的单元中写入数据:

更改内存中的数据:

更改写入的内存地址和数据:

可以观察到此内存地址为地址,是RAM,可以改变其值来在屏幕中显示一个字符占两个字节,内存B810:0和B810:1这两个字节对应着屏幕中的第一个字符的位置,以此类推。

 

 

五、总结与体会

1. T指令是使CPU执行CS:IP指向的指令,不能指定内存执行,需要逐条执行。

2.MOV指令不能用于设置CS,IP的值,最简单的可以修改CS,IP的指令是JMP指令。

3.掌握关于CPU、寄存器、内存的基础知识

4.掌握mov, add, sub, jmp的用法

5.掌握R指令、D指令、E指令、A指令、U指令、T指令和G指令的基本用法。

其中值得注意的是查看内存FFF00H~FFFFFH中的数据,是执行-d fff0:0 ff语句,即从fff00开始查看,ff长度的内存。

 

posted @ 2018-10-27 09:30  江小雯  阅读(455)  评论(2)    收藏  举报