在装完DosBox环境之后,就可以用debug模式进行汇编指令的编程了。

  • 实验内容:

    

首先用a指令进行数据的储存,然后用t命令进行调试。

可以发现ax,bx在不同的命令下发生了改变,cs的地址和指令是相同的,ip的值也是根据输入指令的长度而不断的增加。

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

    mov ax,1

    add ax,ax

    jmp 2000:0003

先观察一下实验要求,执行完第一步后ax= 1,第二步后ax  = 2,执行add 1次 2*2,执行2次,就是2*2*2就是2的3次方,那么2的8次方 就 add 执行 7次。

执行之前先将指令指向add语句 这样就会重复执行 add语句,用jmp 指令更改CS、IP寄存器的值,从而控制CPU执行目标指令。之后,就可执行我们写的汇编指令了,我们要先使用r指令改变 cs 和ip的指向,cs为代码段寄存器,ip为指针寄存器。在任意时刻,CPU将cs:ip指向的内容当做指令执行。

关于执行命令t的执行次数:执行第一二步执行需 2个t,那么执行第三步的t的时候实际上只是改变cs:ip的指向,并没执行cs:ip指向内容的机器指令,后面的7个jmp 每个需要执行2个t才能执行add方法。所以共需要执行t 16次才能计算出2的8次方。

第一次t命令:

最后一次t命令:(最后短线位置的t手抖了)

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

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

尝试修改:

发现无法修改。

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

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

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

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

接着在相同的地址内填写不同的数据,可以看到出现了完全不同的图案。

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

说实话,我也不知道这是怎么回事。我就去查了查,度娘告诉我:这一段内存为显存,是RAM,可以改变其值在屏幕上的显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII码,后一个(高)为要显示的颜色。

实验总结:

(1)首先得理解并且熟练操作的一些指令。

在debug模式下常用的命令:

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

D命令:查看内存中的内容;

E命令:改写内存中的内容;

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

T命令:执行一条机器指令;

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

(2)通过这次实验,对debug的一些基本操作有了基本了解,如何写入机器代码和汇编代码,查看所需要的内容,并且知道了某些内存中存储的内容,以及它们中的内容是否可变等知识。

如果有什么错误的话,还希望各位大佬指出。谢谢!

汇编实验一 查看CPU和内存,用机器指令和汇编语言指令编程的更多相关文章

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

    实验一 查看CPU和内存,用机器指令和汇编指令编程   实验目的 了解什么是Debug,以及Debug中需要用的一些功能 R:查看.改变CPU寄存器的内容 D:查看内存中的内容 E:改写内存中的内容 ...

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

    (1):使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内存的变化. 机器码        汇编指令 b8 20 4e     mov ax,4E20H 05 ...

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

    ·实验任务 (1)使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 b8 20 4e    mov ax,4e20h 05 16 14    add ax,14 ...

  4. Linux 查看CPU,内存,硬盘 !转

    Linux 查看CPU,内存,硬盘 本文转自:http://hi.baidu.com/mumachuntian/item/a401368dbe8a66cab07154e8 1 查看CPU 1.1 查看 ...

  5. CentOS查看CPU、内存、网络流量和磁盘 I/O

    安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/swrqm/s: 每秒进行 merge 的 ...

  6. Linux查看CPU和内存使用情况 【转】

    Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 ...

  7. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  8. CentOS查看CPU、内存、网络流量和磁盘 I/O【详细】

    安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/swrqm/s: 每秒进行 merge 的 ...

  9. 『开发技术』Ubuntu与Windows如何查看CPU&GPU&内存占用量

    0 序·简介 在使用Ubuntu或者Windows执行一些复杂数据运算时,需要关注下CPU.GPU以及内存占用量,如果数据运算超出了负荷,会产生难以预测的错误.本文将演示如何用简单地方式,实时监控Ub ...

随机推荐

  1. linux 迁移项目ProtocolException

    背景:服务器跟换机房,虚拟机完整迁移项目,只修改ip和主机名 1.检查/etc/hosts 中ip 和主机名映射 2.检查网络端口是否有限制以及端口开放是否全了,检查ip有没有配对.RMI注册不上.

  2. java解析HTML之神器------Jsoup

    背景:公司项目要对接第三方商城的商品到自己的商城来卖,商品详情给了个链接url,因为对方的商品详情有他们的物流说明,售后信息,所以要求去掉这部分的代码 @Test public void getIte ...

  3. Ceph Luminous版本创建OSD无法激活问题

    一.问题描述 部署ceph的Luminous之ceph-12.2.10版本,在其中一个集群节点部署OSD时,发现命令执行完毕后,集群中并没有将格式化的盘加入到OSD中,也没有任何报错,问题如下: [r ...

  4. 2018-2019-2 20175224 实验一《Java开发环境的熟悉》实验报告

    实验报告封面 实验内容与步骤 Java开发环境的熟悉-1 1.建立“自己学号exp1”的目录 2.在“自己学号exp1”目录下建立src,bin等目录 3.javac.java的执行在“自己学号exp ...

  5. Eclipse如何新建TOMCAT并配置Server Locations和Publishing属性

    Eclipse如何新建TOMCAT并配置Server Locations和Publishing属性 2018年05月08日 23:10:33 ACGkaka_ 阅读数:1269   一.建立TOMCA ...

  6. Python第一章(北理国家精品课 嵩天等)

    1.1程序设计基本方法 IPO 分析问题,划分边界,设计算法: 编写程序,调试测试,升级维护. 1.2Python开发环境配置 1.3实例1:温度转换 1.4Python程序语法元素分析 缩进,#添加 ...

  7. 【原创】Aduino小车玩法全记录

    本来打算用一周时间好好研究下基于Arduino开发板的小车实验,结果实际上两天就完成了小车可玩的各种功能,包括完成特定动作组合,黑线循迹,(带后退)红外避障和(带舵机)超声波避障,超声波测距,红外遥控 ...

  8. 不使用Visual Studio开发ASP.NET MVC应用(下篇)

    书接上回! 前文“纯手工”.彻底抛弃Visual Studio,制作了一个ASP.NET MVC应用,运行起来还不错,项目目录.源代码.web.config等所有东西都已经做到“最简”,除去了Visu ...

  9. Delphi7连接MySql数据库-DBGrid控件显示数据

    一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...

  10. vue 线上不支持put方法

    在app.js中加上 // Vue.http.options.emulateHTTP = true Vue.http.options.timeout = 15000