头部背景图

汇编debug命令(汇编中怎么用DEBUG调试程序)

2022-09-15 15:26:59 :13
指定有效范围项 Debug 命令中的 range 参数指定了内存的范围,作用是将从100H开始的22H个字节的内容写入名为c:\a.com的

指定有效范围项 Debug 命令中的 range 参数指定了内存的范围,作用是将从100H开始的22H个字节的内容写入名为c:\a.com的文件中如何在Win10环境下使用Debug进行汇编调试目前在win10系统中是没有debug.exe的,++ 说明 使用 Debug 命令但不指定要测试的文件 如果使用没有位置和文件名的 Debug 命令,以下命令等价: dcs:100 110 d cs:100 110 d,cs:100,110 指定有效地址项 Debug 命令中的 address 参数指定内存位置,g 运行在内存中的可执行文件,parameters 指定要测试的可执行文件所需要的任何命令行信息,m 复制内存块中的内容 /n 为 l 或 w 命令指定文件,如何在Win10环境下使用Debug进行汇编调试汇编语言入门关于DEBUG的问题汇编中怎么用DEBUG调试程序启动 Debug。

本文目录

汇编中怎么用DEBUG调试程序


启动 Debug,它是可用于测试和调试 MS-DOS 可执行文件的程序。
Debug [[drive:][path] filename [parameters]]
参数
[drive:][path] filename
指定要测试的可执行文件的位置和名称。
parameters
指定要测试的可执行文件所需要的任何命令行信息。
++
说明
使用 Debug 命令但不指定要测试的文件
如果使用没有位置和文件名的 Debug 命令,然后键入所有的 Debug 命令以响应 Debug 提示符,连字符 (-)。
Debug 命令
以下是 Debug 命令列表:
? 显示 Debug 命令列表。
a 汇编 8086/8087/8088 记忆码。
c 比较内存的两个部分。
d 显示部分内存的内容。
e 从指定地址开始,将数据输入到内存。
f 使用指定值填充一段内存。
g 运行在内存中的可执行文件。
h 执行十六进制运算。
i 显示来自特定端口的 1 字节值。
l 将文件或磁盘扇区内容加载到内存。
m 复制内存块中的内容
/n 为 l 或 w 命令指定文件,或者指定正在测试的文件的参数。
o 向输出端口发送 1 个字节的值。
p 执行循环、重复的字符串指令、软件中断或子例程。
q 停止 Debug 会话。
r 显示或改变一个或多个寄存器。
s 在部分内存中搜索一个或多个字节值的模式。
t 执行一条指令,然后显示所有寄存器的内容、所有标志的状态和 Debug 下一步要执行的指令的解码形式。
u 反汇编字节并显示相应的原语句。
w 将被测试文件写入磁盘。
xa 分配扩展内存。
xd 释放扩展内存。
xm 映射扩展内存页。
xs 显示扩展内存的状态。
分隔命令参数
所有 Debug 命令都接受参数,除了 q 命令之外。可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符。因此,以下命令等价:
dcs:100 110
d cs:100 110
d,cs:100,110
指定有效地址项
Debug 命令中的 address 参数指定内存位置。Address 是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。可以忽略段寄存器或段地址。a,g,l,t,u 和 w 命令的默认段是 CS。所有其他命令的默认段是 DS。所有数值均为十六进制格式。
有效地址如下:
CS:0100
04BA:0100
在段名和偏移量之间要有冒号。
指定有效范围项
Debug 命令中的 range 参数指定了内存的范围。可以为 range 选择两种格式:起始地址和结束地址,或者起始地址和长度范围(由 l 表示)。
例如,下面的两个语法都可以指定从 CS:100 开始的 16 字节范围:
cs:100 10f
cs:100 l 10
++
Debug 子命令
选择 Debug 命令以获得详细信息。
Debug:A(汇编)
Debug:C(比较)
Debug(转储)
Debug:E(键入)
Debug:F(填充)
Debug:G(转向)
Debug:H(十六进制)
Debug:I(输入)
Debug:L(加载)
Debug:M(移动)
Debug:N(名称)
Debug:O(输出)
Debug:P(执行)
Debug:Q(退出)
Debug:r(寄存器)
Debug:s(搜索)
Debug:T(跟踪)
Debug:U(反汇编)
Debug:W(写入)
Debug:XA(分配扩展内存)
Debug:XD(取消分配扩展内存)
Debug:XM(映射扩展内存页)
Debug:XS(显示扩展内存状态)

怎样用debug单步执行汇编语言


[举例说明]:
.

(1)DAA.asm源程序,功能是用程序代替加法运算后的十进制调整指令DAA:

(2)将源程序编译链接得DAA.exe

.
(2)用DEBUG调入并调试程序,
先用T命令单步运行第一条指令,再用G命令连续运行后结指令:


初学汇编语言!debug命令!


mov ax,cs ;连续两条指令的作用是让数据段和代码段是同一个段
mov ds,ax
mov dx,10f;连续三条指令的作用是用DOS功能调用的9号功能在屏幕上显示字符串’hellow world!’
mov ah,09
int 21
mov ah,4c;连续两条指令的作用是结束程序,返回系统
int 21
db ’hellow world!$’ ;定义要显示的字符串
-n c:\a.com ;给文件命名为c:\a.com
-rcx ;以下三行的作用是将CX的值改为22H,即写入文件的长度为22H个字节
CX 0000
:22
-w 100;作用是将从100H开始的22H个字节的内容写入名为c:\a.com的文件中

如何在Win10环境下使用Debug进行汇编调试


目前在win10系统中是没有debug.exe的,所以我们需要下载一个debug.exe用来使用,32位的也可以。
1.首先将下载好的debug.exe放在一个文件夹下,我是放在了D:\debug\debug.exe这里;

2.接着我们打开dosbox,并输入如下命令:

接下来输入D:\切换到D盘,输入如下命令:
至此,便可以在win10环境下正常运行debug程序了。


汇编语言入门关于DEBUG的问题


-a100
,0100:
mov
ax,1
一用G命令就跳出DEBUG呢?
用G得遇到INT20才能停
,你mov
ax,1之后的指令都是无用指令
造成DEBUG
中断
MOV
AX,[SI]
是将
DS:[SI]
这个内存空间的字数据传送给AX寄存器
就是说假如DS=2000
SI=0200
那么就是把2000:0200(即200200)这个内存开始的字数据传送给AX
MOV
AH,0100H
操作数与寄存器的大小应该是对应的
AH是8位寄存器
而0100H是16位数据
所以不能操作

本文编辑:soogor
暂无评论,期待你的首评
Copyright © 2022 All Rights Reserved 山东上格信息科技有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.