汇编之Debug的简单使用

dos下输入debug进入调试(不区分大小写)
debug常用功能
R 查看、改变CPU寄存器内容
D 查看内存内容
E 改写内存内容
U 将内存中的机器指令翻译成汇编指令
T 执行一条机器指令
A 以汇编指令的格式在内存中写入一条机器指令

详解
当输入debug之后系统提示符变成 - 我们可在 -后面输入每一个命令参数
r 的使用
如输入 r 后系统输出
-r
AX=0002 BX=4026 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B43 ES=0B43 SS=0B43 CS=1000 IP=0021   NV UP EI PL NZ AC PO CY
1000:0021 0000          ADD     [BX+SI],AL                         DS:4026=04
如果修改其中一个寄存器中的内容 可以用 r 寄存器名

-r ax
AX 0002
:
当出现 : 后你可以在:后面输入要修改的内容

d 的使用
d 段地址:偏移地址

如 其中 a000为段地址 0为偏移地址
-d a000:0
A000:0000 FF FF FF 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
A000:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
A000:0020 00 00 7E 81 A5 81 81 A5-99 81 81 7E 00 00 00 00   ..~........~....
A000:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
A000:0040 00 00 7E FF DB FF FF DB-E7 FF FF 7E 00 00 00 00   ..~........~....
A000:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
A000:0060 00 00 00 00 6C FE FE FE-FE 7C 38 10 00 00 00 00   ....l....|8.....
A000:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
上面信息中 最前面A000为段地址,段地址分号后面的0000 或0010,0020则都是偏移地址,
而  段地址*16+偏移地址则为此内存的真实地址 A000:0000 A000*16+0000代表的真实地址就是A0000
而A000:0010 就是A000*16+0010 的真实地址就是A0010

中间的16位数据代表这个存储间中存储的数据 如A000:0000 后面的FF FF FF 00 00 00 00 00-00 00 00 00 00 00 00 00
则代表了从地址空间A0000到A000F中这16个存储单元的存储的信息

最后的一部分就是这个数据所对应的ASCII码信息 如................ 其中.代表无数据

d 段地址:偏移地址 结束地址

-d a000:0 1
A000:0000 FF FF

-d a000:8 f
A000:0000                          00 00 00 00 00 00 00 00           ........

e 修改数据
e 段地址:偏移地址 数据信息
-e a000:0 00 00 00
e 段地址:偏移地址 回车
输入信息中间用空格隔开
-e a000:0
A000:0000 00.ab   00.ff   00.00

-u 将机器信息转换成汇编指令信息
u 段地址:偏移地址
-u a000:0
A000:0000 AB            STOSW
A000:0001 FF00          INC     WORD PTR [BX+SI]
A000:0003 0000          ADD     [BX+SI],AL
A000:0005 0000          ADD     [BX+SI],AL
A000:0007 0001          ADD     [BX+DI],AL
A000:0009 0000          ADD     [BX+SI],AL
A000:000B 0000          ADD     [BX+SI],AL
A000:000D 0000          ADD     [BX+SI],AL
A000:000F 0000          ADD     [BX+SI],AL
A000:0011 0000          ADD     [BX+SI],AL
A000:0013 0000          ADD     [BX+SI],AL
A000:0015 0000          ADD     [BX+SI],AL
A000:0017 0000          ADD     [BX+SI],AL
A000:0019 0000          ADD     [BX+SI],AL
A000:001B 0000          ADD     [BX+SI],AL
A000:001D 0000          ADD     [BX+SI],AL
A000:001F 0000          ADD     [BX+SI],AL

-a以汇编语言的形式写入一条指令

-a 1000:0
1000:0000 mov ax,10
1000:0003 mov bx,ax
1000:0005 add ax,bx
1000:0007

-t 执行汇编指令


-r
AX=0002 BX=4026 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B43 ES=0B43 SS=0B43 CS=1000 IP=0000   NV UP EI PL NZ AC PO CY
1000:0000 B81000        MOV     AX,0010
执行 mov ax,0010之间 ax=0002
-t

AX=0010 BX=4026 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B43 ES=0B43 SS=0B43 CS=1000 IP=0003   NV UP EI PL NZ AC PO CY
1000:0003 89C3          MOV     BX,AX
执行后 ax=0010 下一条指令 mov bx,ax
-t

AX=0010 BX=0010 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B43 ES=0B43 SS=0B43 CS=1000 IP=0005   NV UP EI PL NZ AC PO CY
1000:0005 01D8          ADD     AX,BX
执行 mov bx,ax后 bx=0010 下一条指令 add ax,bx
-t

AX=0020 BX=0010 CX=0002 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B43 ES=0B43 SS=0B43 CS=1000 IP=0007   NV UP EI PL NZ NA PO NC
1000:0007 0020          ADD     [BX+SI],AH                         DS:0010=A7
执行 add ax,bx后 ax=0020


quit退出debug模式

内存地址空间设置

00000-9FFFF 主存储器地址空间(RAM)
A0000-BFFFF 显存地址空间
C0000-FFFFF 各类ROM地址空间,如主板ROM,显卡ROM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值