初识汇编---Debug命令

1,汇编debug操作符:

•Debug命令操作符:
▫R命令:查看、改变CPU寄存器的内容
▫D命令:以16进制形式显示一块内存区域的内容

▫E命令:改写内存中的内容
▫A命令:以汇编指令的格式在内存中写入一条机器指令

▫U命令:将内存中的机器指令翻译为汇编指令
▫T命令:执行一条机器指令

▫G命令:执行到指定位置(断点),如“g cs:0012”;
▫P命令:执行子程序调用、循环、中断、重复字符串操作等指令,停止于下条指令。
▫Q命令:退出Debug

•说明:
▫在Debug中输入或显示的数据都是十六进制形式;
▫Debug命令是单个字母,命令和参数的大小写可混合输入;
▫当命令出现语法错误时,将在出错位置显示 “^Error”;
▫使用T命令执行一条指令前,一定要确保其有效。无效指令可能导致处理器死锁、Debug无法响应、甚至系统重新引导。

2,汇编实验之hello world:

源文件如下:
data segment
buf db “Hello world!$”
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,buf
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start

这里写图片描述

具体如何操作实现,汇编程序应该如何编译吗,请参考如下博客:
http://blog.csdn.net/acm_hmj/article/details/52524696

3,debug中各个寄存器变化分析:
(1),当文件编译连接成功之后,出现如下提示:

这里写图片描述

(2),输入指令进入debug:

这里写图片描述

(3),使用-r指令,查看CPU寄存器的内容:

这里写图片描述

8086CPU共有14个寄存器,分别是AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

其中包括:
4个数据寄存器(AX,BX,CX,DX)
2个指针寄存器(SP和BP)
6个段寄存器(ES、CS、SS、DS、FS和GS)
1个指令指针寄存器(IP)
1个标志寄存器(EFlags)

(4)输入t5命令,查看单步调试中各个寄存器中数据的变化

这里写图片描述

在这里为了方便查看,我们用红色标出了

其中AX变化:FFFF—076A—096A
经过 MOV AX,067A 寄存器AX从FFFF变为076A,
在这里我们把076A这个值存储在AX中
经过 MOV AH,09 寄存器AX从076A变为096A
在这里我们把09这个值存储在AX中的高8位中

这里写图片描述

其中IP变化:0000—0003—0005—0009

指令指针IP是一个16位专用寄存器,
当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。
•注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)

其中地址变化:076B:0003—076B:0005—076B:0009—076B:000B
左边显示的4位为段地址,右边显示的4位为偏移地址,
物理地址的计算公式为:段地址×10H/16H+偏移地址,

其中右边的ds是数据段的地址,是那个地址的数据
是lea将那个偏移地址的数据移入寄存器产生的。

4),使用-p指令,查看源代码经过操作之后要输出的结果:

这里写图片描述

在学习过程,我发现的比较好的汇编相关博客与大家分享:
(1)
http://blog.csdn.net/feier7501/article/details/8546978
(2)
http://blog.csdn.net/ly131420/article/details/8741225
(3)
http://blog.chinaunix.net/uid-26275986-id-4334522.html
(4)
http://www.cnblogs.com/wz0107/p/5380154.html
(5)
http://www.cnblogs.com/technology/archive/2010/05/16/1736782.html

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值