汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程
实验一 查看CPU和内存,用机器指令和汇编指令编程
实验目的
了解什么是Debug,以及Debug中需要用的一些功能
R:查看、改变CPU寄存器的内容
D:查看内存中的内容
E:改写内存中的内容
U:将内存中的机器指令翻译成汇编指令
T:执行一条机器指令
A:以汇编指令的格式在内存中写入一条机器指令
实验内容及过程
(1)使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化。
用e命令将指令写入内存,之后通过d命令查看内存中的机器代码,验证正确性。
u查看机器指令对应的汇编指令
用a命令将指令写入内存,同样使用d命令查看机器代码的正确性。
写好程序之后通过t命令单步执行,查看各个寄存器的值,根据题目要求,记录CS:IP的指向,具体结果的可以从下面的截图中获得。
(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
用a命令在2000:000处写出指令,然后用r命令来修改CS为2000,IP为0,然后用t命令执行,直到ax中的值为10
因为默认的是十六进制,所以ax中的0010实际代表十进制的16
写入指令:
执行
(3)查看内存中的内容。
查看生产日期
根据题目可以看到生产日期存在内存FFF00H~FFFFFH中的某个单元,查看该内存。
可以在最后一行看到生产日期01/01/92在地址ffff5~ffff12处,下面用e进行修改;
因为是ROM,所以日期是不会改变的
(4) 向内存从B8100H开始的单元中填写数据,如:
-e B810:0000 01 01 02 02 03 03 04 04
请读者先填写不同的数据,观察产生的现象;再改变填写的地址,观察产生的现象。
可以看到,向B8100H单元中输入这些数据后,可以观察到界面上出现了一些彩色的图案,已用红色方框标识。
接着在相同的地址内填写不同的数据,可以看到出现了颜色不同的数字。
下面改变输入数据的地址,可以看到显示的内容不变,位置改变了。
在改变地址的基础上,改变写入的数据,可以发现位置不变,内容改变,并且相对于上一步来说,将04的位置改为08,发现对应位置的内容的颜色也不一样了。
综合以上结果可以知道,这一段内存为显存,是RAM,可以改变其值在屏幕上的显示,其中这一个字符占两个字节,前一个(低)为字符的ASCII码,后一个(高)为要显示的颜色。
实验总结
通过这次实验,对debug的一些基本操作有了基本是了解,知道了各个指令所做的功能,如何写入机器代码和汇编代码,以及查看所需要的内容,并且知道了某些内存中存储的内容,以及它们中的内容是否可变等知识。这对以后进行更深入的学习是非常有帮助的。
---------------------
作者:ln8429
来源:CSDN
原文:https://blog.csdn.net/ln8429/article/details/46763157
版权声明:本文为博主原创文章,转载请附上博文链接!
汇编语言——用DOSBox的debug查看CPU和内存 & 用机器指令和汇编指令编程的更多相关文章
- 查看CPU和内存,用机器指令和汇编指令编程【Debug模式】
命令 作用 举例 R 查看,改变CPU寄存器的内容 查看:r 改写:r ax D 查看内存中的内容 d 1000:0 f E 改写内存中的内容 e 1000:0 f U 将内存中的机器指令翻译成汇编指 ...
- 实验一 查看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 ...
随机推荐
- qt打印输出到控制台
创建工程的时候是QT Console Application 1.项目->run->Run in terminal 2.pro文件中添加 CONFIG +=console thread ...
- 微信小程序 canIUse
wx.canIUse(); 微信文档中定义在API中,可以理解为一个函数. 返回值: true 或者 false 示例: // 在JS文件的函数中进行使用 console.log(wx.canIUse ...
- js 代码位置不同,导致随着点击函数执行次数累加
每个人书写代码的习惯都不同吃,思想也都不一样,但在工作中为了减少工作量与时间,难免遇到要用别人写的代码.这次在使用同事的代码中,偶然发现的问题,因为js不好,所以一眼也没发现问题所在,查了查网上才知道 ...
- 【LuoguP4887】第十四分块(前体)
题目链接 题意 区间两数异或在二进制下有 \(k\) 个 \(1\) 的对数. Sol 普通莫队的话,如果要实时维护好区间内的答案需要支持区间对一个数求答案. 直接做不是很好做,容易发现其实这也就是一 ...
- C# MVC的默认页
MVC的默认页,其实是默认路由设置启动哪一个Controller的哪一个Action,在根目录的Global.asax.cs里面设置.是MVC项目里面的路由.將下面的controller和action ...
- vue自定义指令,自动调用下载的方法
directives: { clickDown: { inserted (el, binding, item) { if (+binding.value.item.fromId === +item.c ...
- web前端_js
在HTML中可以将JavaScript/JS的代码写在head中,被script标签所包裹,当浏览器解释HTML时,遇到style标签时,按照CSS规则解释,遇到Script标签时,按照JavaScr ...
- (转)Spring实例化
标签:SpringContextUtil,getBean 手动获取Bean 方法一 不用配置xml,直接java代码实现 /** * 工厂模式选择Bean类 */ public class MyBe ...
- jquery attribute$=value选择器 语法
jquery attribute$=value选择器 语法 作用:[attribute$=value] 选择器选取每个带有指定属性且以指定字符串结尾的元素. 语法:$("[attribute ...
- C# socket 与网页通讯
class Program { static Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Pr ...