debug:汇编DEBUG全过程跟踪!



最近刚刚接触汇编,建议大家和我样能通过DEBUG更好理解代码.这样不但能调试,而且使你对内存以及寄存器也能够随时掌握他内容,更有助于你巩固反汇编出指令作用!

就不多写了直接来个简单点,主要是针对和我初学者,代码量太大未必是件好事(对于理解起来)

代码如下:     X*16+Y结果存放到ZZZ

dseg segment
xxx  dw 1234h
yyy  dw 5678h
zzz  dd ?
dseg ends

cseg segment
     assume cs:cseg,ds:dseg
start: mov ax,dseg
       mov ds,ax
       mov ax,xxx
       xor dx,dx
       mov ax,xxx
       mov dx,16
       mul dx
       add ax,yyy
       adc dx,0
       mov word ptr zzz,ax
       mov word ptr zzz+2,dx
       mov ah,4ch
       21h
       cseg ends
       end start

先DEBUG加载EXE .反汇编下看看到底汇编汇编出什么样代码 并-R来查看下当前各个寄存器内容 如图:

\"\"

我们可以看到数据段地址被分配为13C5

下面开始我们-T来跟踪下: 如图

\"\"

单步跟踪,通过给DS赋值 DS内容在MOV DS,AX后变为13C5

XXX也被汇编成DS:[0000],也就是我们在DESG中定义值为1234H    MOV后AX变为1234H

XOR后DX内容变为0 主要为扩展成32位结果

继续跟踪如图:

\"\"

*16   的前DX已经为16 所以MUL后低字在AX里 ,高字在DX里

加上5678H 汇编后为DS:[0002]   加如AX   为防止进位 在跟个ADC把结果低字存到DS:[0004],高字存到DS:[0006]

下面我门来看下数据段内存值:如图

\"\"

在这里DOS就先不看了,所以直接来-D看看内存低字79B8 和高字0001都以存到相应内存!

在学习汇编过程中是有写枯燥,但希望大家不要总看书,不实战,这样你学习效果不定很好,如果你还没能力写可以象我这样来调试,有助于你对理解.这比你看书靠脑子琢磨要好多.就写到这.

Tags:  debug命令 debug卡的种类 debug卡 debug

延伸阅读

最新评论

发表评论