汇编实验一 查看CPU和内存,用机器指令和汇编语言指令编程
在装完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和内存,用机器指令和汇编语言指令编程的更多相关文章
- 汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程
实验一 查看CPU和内存,用机器指令和汇编指令编程 实验目的 了解什么是Debug,以及Debug中需要用的一些功能 R:查看.改变CPU寄存器的内容 D:查看内存中的内容 E:改写内存中的内容 ...
- 实验一 查看CPU和内存,用机器指令和汇编指令编程
(1):使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内存的变化. 机器码 汇编指令 b8 20 4e mov ax,4E20H 05 ...
- 实验1 查看CPU和内存,用机器指令和汇编指令编程
·实验任务 (1)使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码 汇编指令 b8 20 4e mov ax,4e20h 05 16 14 add ax,14 ...
- Linux 查看CPU,内存,硬盘 !转
Linux 查看CPU,内存,硬盘 本文转自:http://hi.baidu.com/mumachuntian/item/a401368dbe8a66cab07154e8 1 查看CPU 1.1 查看 ...
- CentOS查看CPU、内存、网络流量和磁盘 I/O
安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/swrqm/s: 每秒进行 merge 的 ...
- Linux查看CPU和内存使用情况 【转】
Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 ...
- 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?
1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...
- CentOS查看CPU、内存、网络流量和磁盘 I/O【详细】
安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/swrqm/s: 每秒进行 merge 的 ...
- 『开发技术』Ubuntu与Windows如何查看CPU&GPU&内存占用量
0 序·简介 在使用Ubuntu或者Windows执行一些复杂数据运算时,需要关注下CPU.GPU以及内存占用量,如果数据运算超出了负荷,会产生难以预测的错误.本文将演示如何用简单地方式,实时监控Ub ...
随机推荐
- python 全栈开发笔记 1
将自己的姓名用进制表示出来 #自己姓名的进制表示 name=input('请输入你的名字:') for i in name: print(i) # python 3 中是按字符进行循环的 bytes_ ...
- Python之字符串方法
def capitalize(self): # 第一个字符变大写 def center(self, width, fillchar=None): # 内容居中,两端可指定内容填充 def count( ...
- LeetCode 148 排序链表
题目: 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序. 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2 ...
- 运行python脚本时,报错InsecurePlatformWarning: A true SSLContext object is not available,解决方法
今天,要在新环境里运行一个python脚本,遇到下面的报错: /usr/lib/python2.7/site-packages/urllib3/util/ssl_.py:160: InsecurePl ...
- maven快速自动更新子模块项目的版本号
当一个版本发布,新起一个版本时,我们需要更改一下项目中的版本号.一个maven工程,如果只是一个单一的主项目,那么只要手动修改一下 pom.xml 就 可以了,耗不了多少时间.但是如果这个maven项 ...
- RBAC角色权限设计
https://www.cnblogs.com/vinozly/p/4851364.html
- PAT A1103
PAT A1103 标签(空格分隔): PAT 解题思路: DFS #include <cstdio> #include <vector> using namespace st ...
- 如何在linux环境安装数据库
1.1 获取oracle 数据库安装包: 注意:获取的是database的安装包,不是客户端的安装包 1.2 以root用户登陆云主机,修改主机名 Hostname 1.2.1 ...
- ueditor的用法
今天做了一下百度富文本编辑器,遇到了一些问题,现在来总结一下: (1)jQuery没有引用,解决方法:引用jQuery并且放在所有的js前面 (2)没有报错,但是样式显示不出来.解决方法:css引用的 ...
- myeclipse 修改用户名密码
当在一台公共的电脑上开发程序时,就需要涉及到更改svn用户名和密码,不然直接用本机用户密码提交,有点不妥. win7系统解决方案: C:\Documents and Settings\Administ ...