博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验一 查看CPU和内存,用机器指令和汇编指令编程
阅读量:5796 次
发布时间:2019-06-18

本文共 1568 字,大约阅读时间需要 5 分钟。

一、实验目的

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

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

   3、掌握第一二章所涉及的几条指令mov,add,jmp的用法

 

二、实验准备

   1、复习教材第一二章的内容,完成教材内相关检测点

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

 

三、实验内容

   1、教材实验1(P35)

      (1)练习教材P35-45【预备知识debug的使用】,学习debug启动,退出及常用指令用法

       1)按Windows+r键,在文本框中输入“cmd”,回车进入系统

       

      这是 书上的进入debug操作,但由于电脑的原因,我只能下载DOSBOX,在DOXBOS上进行操作

      2)用R命令查看,改变CPU寄存器的内容

      

      3)用R命令来改变寄存器中的内容

      

     4)用D命令查看内存中的内容

     

    而直接使用D命令,将列出debug预设的地址内容

    

    5)用E命令改写内存中的内容

   

   用E命令向内存改写字符

   

   6)用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码

   

    

    用T命令继续执行

    

    7)用A命令以汇编指令的形式在内存中写入机器指令

    

    2、在基础练习上完成【2.实验任务】

四、实验结论

      1、教材P45 2.实验任务

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

     首先使用E命令编写机器码,然后使用U命令查看它所对应的汇编指令

      

      因为是在1000:100中编写的机器码,所以先改变了cs的地址为1000,然后在用T命令运行之前所编写的指令

      

      

      

      使用A命令将指令写入内存,但由于运行结果与使用E命令编写的指令运行结果相同,所以不再此报告中复述

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

              mov ax,1

              add ax,ax

              jmp 2000:0003

        

        

        写入指令后,将cs:ip的地址改为2000:0,直接使用T命令运行,上方所提供的为2的3次方的结果,求2的8次方只需要继续使用T命令

       (3)查看内存中的内容

              PC机主板上的ROM中写有一个生产日期,在内存FFF00H-FFFFFH的某个单元中,请找到这个生产日期并试图改变它

          使用D命令查看内存FFF00H-FFFFFH的某个单元中的生产日期的值。为01/01/92

          

         使用E命令改变其值为20121028,并使用D命令查看

         

        结果发现值并没有发生改变

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

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

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

         

         

         改变地址继续输入相同数据

        

        

       结果发现不同的内存地址,输入相同的数据后,所运行的结果是不一样的

五、总结与体会

     由于电脑原因使用了虚拟系统下的DOSBOX,因为安装上的问题,查看了老师提供的一位网工同学写的安装DOSBOX的博文。其他同学学习汇编所写的技术博文和一些心得体会对于我学习汇编有很大的帮助,可以让我避免一些错误,让我更好的了解汇编,使用汇编程序。

    在这次的实验中,我发现使用debug时的一些不方便的地方,比如:当做完一道题之后,每次都需要按Q键退出,然后使用cls清空屏幕,接着在进步debug界面。我个人觉得这些操作比较麻烦,但又不能省略。实验过程中,由于我不太会使用T命令的跳转执行所指定的地址的指令,所以,每次执行的时候都会先改变cs和ip 的地址,在进行逐条指令运行,从而造成我在实验的麻烦。

   总而言之,这次的实验是我收获良多。

        

转载于:https://www.cnblogs.com/ntybky/p/9865134.html

你可能感兴趣的文章
L104
查看>>
被遗忘的CSS
查看>>
做完小程序项目、老板给我加了6k薪资~
查看>>
脱离“体验”和“安全”谈盈利的游戏运营 都是耍流氓
查看>>
TortoiseSVN中图标的含义
查看>>
Python version 2.7 required, which was not foun...
查看>>
[BZOJ] 1012 [JSOI2008]最大数maxnumber
查看>>
根据毫秒数计算出当前的“年/月/日/时/分/秒/星期”并不是件容易的事
查看>>
Unity Shaders and Effects Cookbook (3-5) 金属软高光
查看>>
31-hadoop-hbase-mapreduce操作hbase
查看>>
NYOJ283对称排序
查看>>
C#反射实例应用--------获取程序集信息和通过类名创建类实例
查看>>
VC中实现文字竖排的简单方法
查看>>
程序员常用的六大技术博客类
查看>>
深入理解浏览器的缓存机制
查看>>
又拍云沈志华:如何打造一款安全的App
查看>>
dubbo源码分析-架构
查看>>
6套毕业设计PPT模板拯救你的毕业答辩
查看>>
Windows phone 8 学习笔记
查看>>
我的友情链接
查看>>