汇编语言----第一部分

目录

1:了解debug的6个功能

2:了解解CS:IP


1:了解debug的6个功能

首先我们要知道什么是debug,debug其实只是汇编语言的一种调试工具,我们进入dos环境下一般直接输入debug就可以进入debug模式下的(我的电脑是64位机,所以我下载了模拟的dos32位机)。使用debug我们可以查看cpu各种寄存器的内容,内存的情况,还可以追踪程序的运行。好了,话不多说,开始进入主题。

(1)r命令,我们可以使用它查看寄存器的内容,同时也可以修改寄存器中的内容。

(2)d命令,我们可以使用它来查看内存中的内容,后面接上    段地址 : 偏移地址(物理地址=段地址*10+偏移地址)

 

 (3)-e命令,我们可以使用它来修改内存中的内容,同样的,它的后面也要加上  段地址  :   偏移地址(这是我建议大家的)

  

大家会发现在每行的最后面会有一些点号,这些是显示对应的ASCII的地方,比如说,修改的内容是 :输入了41(这里的41可不是十进制,而是十六进制,换句话说汇编语言这里面的都是十六进制,然后41对应的十进制是65,后面ASCII对应的地方就会出现ASCII为65的a字符了)。

(4)-u命令    它是将机器指令转换成汇编语言的编译指令。

 (5)-t命令,  执行一条机器指令。

 

 比如说这段,我在3000:0006的地址写下了指令,如何使用-t命令开始执行,可以发现我写的指令是将AX,BX寄存器的内容修改,也确实修改了。

(6)-a命令,就是写入机器指令(我建议大家后面最好带着段地址 : 偏移地址)

2:了解CS:IP

(1)CS:IP大家如果注意到-r命令查看寄存器的内容会发现,他也在寄存器中,不过,他们两是存放指令的,假如CS内容是m,IP的内容是n,那么CPU将会从m*16+n单元开始读取指令。

(2)如果想要修改CS:IP的话,从上面我们知道CS:IP是存放指令的地方,修改就代表着跳转指令,执行跳转后的单元位置的,执行相对应的命令。这里用到的是jmp命令,它还是后面加段地址:偏移地址(注意一定要在-a命令下,不然会报错)。

 

 

 大家仔细看下上面的代码,本来ax被mov修改成了1990,
后来jmp跳转到了4000:0中,而在4000:0中有个mov ax,7777的指令,
就将ax修改成了7777了,后面也是如此,
后面的mov dx,9999没有出现是因为它是在3000位置那里,
现在跳转到了4000,总不能倒着地址往后退吧

本文到此结束,如有错误还请大佬指正!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜到极致就是渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值