汇编基础知识之二debug的使用
DEBUG的使用
(要在win32位习题下进行,win7 64位需要安装DosBox和debug这2个软件):
1:win64位下debug的使用教程:
下载debug.exe,这里我把debug放在了c盘根目录下
下载DosBox并安装好,
输入mount c c:\ 加载目录到c盘
输入c:\ 进入到c盘,看到我们已经在c盘下了。
输入debug,表示打开放在c盘下的debug工具,使用r命令,可以看到,我们进入了熟悉的debug环境。
2:debug的基本命令:
R 查看以及改变CPU寄存器的内容
例如 r ax 修改ax 的内容
D 查看内存中的内容
E 改写内存中的内容
U 将内存中的机器指令翻译成汇编指令
T 执行一条机器指令
A 以汇编指令的格式在内存中写入一条机器指令
quit 退出debug模式
3:实例讲解:
1)将下面3条指令写入从2000:0开始的内存单元中,利用这2条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
(1): 说明2的8次方是256,也就是10000 0000(B)=256(十进制)=100(16进制),算到ax=0100时就是结果
注意:debug里面的数字都是16进制的
(2)然后修改cs的值为2000和ip的值为0
可见此时的cs=2000,ip=0
(3)使用t命令单步执行:
(4)注意:jmp 0003是跳转到2000:0003内存地址,然后在相加,然后在跳转,一直循环
最后的结果,现在里面的只看ax,cs,ip
2)查看内存的内容,PC机主板上的ROM中写的一个生产日期,在内存FFF00H~~FFFFFH的某几个单元中,请找到生成日期并试图改变它。
解析:FFF00H是20位,有段地址和偏移地址合成,FFF0段地址,0偏移地址,FFFFFH有FFF0段地址和FF偏移地址
先修改CS为fff0,IP地址值位0
查看内存的范围fff0:0 ff
最右边部分是ascii的值是10进制的,中间的是16进制的,通过ascii表可查,十进制30是对应的ascii值是0(30(H)-->48(十进制),48对应的ascii是0),以此类推可得
日期是92年1月1日。
下面尝试修改日期,e命令是改写内存的东西
但是日期并没有改变,因为是主板上的ROM是只读存储器,不能修改
3)向内存从B8100H开始的单元中填写数据
e B810:0000 01 01 02 02 03 03 04 04
可以看到上面出现了小图标,这是因为B810是显存的地址,修改显存的地址改变在屏幕上显示。
汇编基础知识之二debug的使用的更多相关文章
- Java JDBC的基础知识(二)
在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...
- LeetCode刷题191130 --基础知识篇 二叉搜索树
休息了两天,状态恢复了一下,补充点基础知识. 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继 ...
- Ajax基础知识(二)
接上一篇 Ajax基础知识(一) 在上一篇博客里,抛弃了VS中新建aspx页面,拖个button写上C#代码的方式.使用ajax的方式,异步向服务器请求数据.我们让服务器只简单的返回一个" ...
- HTTP基础知识(二)
接着上一章的内容:HTTP基础知识(一) 二.简单的HTTP协议 1.客户端:请求访问文本或图像等资源的一端称为客户端: 服务器端:提供资源响应的一端 2.以百度为例子 这是请求头: 在起始行 ...
- XML的相关基础知识分享(二)
前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...
- python基础知识(二)
以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍
- Android中的一些基础知识(二)
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...
- 《Java从入门到失业》第一章:计算机基础知识(二):计算机组成及基本原理
1.2计算机组成及基本原理 1.2.1硬件组成 这里说的计算机主要指微型计算机,俗称电脑.一般我们见到的有台式机.笔记本等,另外智能手机.平板也算.有了一台计算机,我们就能做很多事情了,比如我在写这篇 ...
- C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)
前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处. 本文的重点就是:值类型直接存储其值,引 ...
随机推荐
- WebAPI接口调用身份验证
Common public interface ICacheWriter { void AddCache(string key, object value, DateTime expDate); vo ...
- filter应用案例一:分IP统计访问次数
统计工作需要在所有资源之前都执行,那么就可以放到Filter中了.用Map<String,Integer>装载统计的数据.Map创建时间(使用ServletContextListener, ...
- 【Filter 页面重定向循环】写一个过滤器造成的页面重定向循环的问题
今天做一个过滤器,碰上页面重定向循环的情况: 浏览器的访问路径是:http://192.168.16.104:8080/biologyInfo/login/login/login/login/logi ...
- Android 编程下 ListView 的 HeaderView 和 FooterView 不可选择点击
在 ListView 里,HeaderView 和 FooterView 也占一行,与其他的 item 一样,可以点击,有索引,HeaderView 的索引为0.如果要使这两项不可点击,可以使用下面的 ...
- for的冒泡排序练习题
这是一个冒泡排序的方法,请汲取其中的思想.有一组数: 1,2,3,4,5,6请将这组数用降序排列.我们可以将数组里面的数两两相比,如果第二个数比第一个数大,那么将第二个数值与第一个数值交换,然后让其循 ...
- 运行re-sign.jar重签名工具报错ERROR:Cannot run program "D:\sdk\tools\zipalign
今天在使用这个拖拽到具,把apk文件拖到re-sign.jar运行打开的界面,报错如下: ERROR:Cannot run program "E:\Android sdk\sdk\tools ...
- Java List与数组之间的转换
http://blog.csdn.net/kingzone_2008/article/details/8444678
- MFC 动态修改对话框标题
在对应对话框的初始化函数OnInitDialog()中添加以下代码: CString title; title.Format("%d",Id);//在标题栏动态显示Id的值 thi ...
- Python基础6- 流程控制之if条件语句
Python条件语句是通过判断一条或多条条件语句的执行结果来决定执行哪条代码块的.Python 中if 语句用于控制程序的执行,基本形式为:if 判断条件: 执行语句……else: 执行语句…… #c ...
- linux 安装eclipse 和cdt
这个东西说起来简单,但是经历了无数次到失败,终于还是安装完成了. 最早到时候我下载了eclipse和cdt让后安装,安装完成以后,无法运行和编译程序 后来我学到了一个牛逼的命令yum 这个命令会帮助我 ...