汇编中怎么用DEBUG调试程序
启动
汇编debug指令 汇编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
dcs: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
l10
++
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(显示扩展内存状态)
汇编语言中如何运行指令
开始菜单->运行->输入"cmd"回车->输入"cd.."进入c盘根目录->输入"debug"调用程序运行指令->在debug中可以用"t"多指令运行,可以为任意数,单指令运行的时候只打"t"就可以.
没搞明白你说的是什么意思哦,你是说汇编程序编译好了,怎么运行,还是代码中想做调用啊!
soft,一款不错的软件
请参考
汇编语言debug 中 G命令怎么用
调试程序用t或p命令,也可以用g,但需带停止地址参数。
g不是跳转,是执行。
不带参数的g是从当前ip开始执行程序,如果程序没有设置返回dos的相关指令,执行结果未知。
带参数的g是从当前ip开始执行程序,直到参数地址停止。如:g200
是从当前ip开始执行程序到200停止
汇编语言怎么使用debug命令查看相加结果在哪里
ma文件夹下一般有:edit,link,debug
edit.exe是用来编辑代码的。
link.exe是用来链接可执行文件的
debug.exe是用来调试代码的
一般步骤是:
用命令行,先进入ma文件夹
>cmd
>d:
>cd ma
>edit text.a。编辑完后,保存退出。
>link text;然后回车
>text 执行
>debug text;回车
debug参数:
-d+段:显示存储器内容。
-e+段:修改存储器单元的内容。
-r+回车:显示寄存器内容。
-r+寄存器:修改寄存器内容。
-g=起始地址,结束地址:运行程序
-t=....:单步跟踪。
-p:跟踪。
-a:汇编。
-u:反汇编。
以上是用ma来写汇编代码。
你也可以直接用编译在一起的软件来写代码。
ma for windows集成环境系统,那里面省了前面的步骤。但是debug哪些参数仍然可以用。
祝你学好汇编代码。
用DEBUG将可执行文件装如内存后,执行6次P命令(即P回车),然后用D2 L1命令可看到RESULT中的内容。
你既然不想学,我想你肯定不想知道为什么。
同情一楼的苦口婆心。。。。。。
你自己都说不想学了,让别人帮看看好了。
汇编语言,debug调试的时候,怎样一步一步执行一个循环指令
用T命令,单步执行, 源程序及编译所得EXE文件运行截图如下:
;; ;;;;;;1加至100
ASSUME CS:CODE
CODE SEGMENT
ORG 100H
START: MOV AX, 0 ;; AX的和值清零
MOV CX, 0 ;; CX的加数清零
LP: INC CX ;; CX←CX +1
ADD AX, CX ;; AX←AX +CX
CMP CX, 100 ;; 将CX值与100比较
JB LP ;; 若CX < 100,转LP循环
INT 3 ;; 若CX=100,程序暂停,以便可看AX的和值
CODE ENDS
END START
汇编 DEBUG 下调试问题 二进制加减指令
这个程序段完成112233H+445566H,并把结果存放在sum单元
first
是这样定义的吧:
first
db
11h,22h,33h
second
db
44h,55h,66h
对应相加的话应该从位开始
所以应该是
MOV
AL,FIRST[BX]
这时bx=2,就相当于mov
al,first+2(变址寻址嘛)
也就是先计算33H+66H
然后依次计算22H+55H和11H+44H
后两次加法注意进位(使用adc指令)
不是只取后两位,而是从后两位开始相加
LEA
DI,SUM
ADD
DI,2
MOV
BX,2
MOV
AL,FIRST[BX]
ADD
AL,SECOND+2
先是后两位相加
MOV
[DI],AL
存结果
DEX
DI
这里应该是dec
di,di减一,指向中间字节
DEX
BX
这里也是dec
bx
MOV
AL,FIRST[BX]
ADC
AL,SECOND+1
中间字节相加,还有后两位的进位
MOV
[DI],AL
存结果
DEX
DI
还是dec
di
DEX
BX
一样的,也是dec
bx,指向字节
MOF
AL,FIRST[BX]
ADC
AL,SECOND
相加,还有中间两位相加的进位
MOV
[DI],AL
存结果