《汇编语言》学习笔记4——DEBUG

DEBUG主要命令

1.  R    查看和修改寄存器

  D    查看内存单元

    E    修改内存单元

    U    反汇编,将机器指令变为汇编指令

    T/P   单步执行

    G    连续执行程序

    A    输入汇编指令

    Q    退出

2.DOS 命令

  cd \      退到根目录C>下

  dir        显示文件列表

  cd  目录名   进到目录

  cd ..      退回上级目录

  e:       进到e盘

  cls      清屏

  type 文件的绝对路径    显示文本文件内容(type  c:\hp\a.asm)

  1.R命令

    直接键入R    将显示CPU所有的寄存器和标志位

    修改寄存器:  在R后跟寄存器名,则显示寄存器内容,在冒号后可键入新的值,即修改成功,用R命令查看

    其中,IP指令寄存器的值为0100H,表示将要执行的指令在代码段的0100H单元中,该指令单元的逻辑地址应该由CS:IP构成,即0AE3:0100H

    反汇编就是讲二进制的机器指令显示成汇编指令。有三部分组成:0AE3:0100表示该指令所在单元的逻辑地址,42表示该指令的机器码,INC DX作用将DX自加1

  2.D命令——查看内存单元

   格式:  D  段地址:起始偏移地址[结尾偏移地址]

    

    左边一列为逻辑单元。

    中间部分为存储单元的内容,每行为16个字节单元,中间的小横线用于区分前8个单元和后8个单元

    右边部分显示出内存单元中的ASCII码表时的字符,无法显示的用小点表示

    图中第一行单元的偏移地址从0000H~000FH,第二行单元的偏移地址为0010H~001FH,下面的依次类推。

    图中可看出数据段的段地址为DS,值为0AE3H,0号单元的内容为CDH,依次类推15号的单元内容为03H。第二行0010H(16号)单元内容为47H,它是大写字母G的ASCII码,在最右边显示了G,表示该单元的值47H诀兼做ASCII码

  3.E命令——修改内存单元

    格式:E  起始位置  修改值  修改值....

      

     若E后面直接跟偏移地址,则修改当前数据段下偏移地址所指向单元值,还可以用E命令修改其他段的存单元的内容

          E  10    修改当前数据段10H号单元内容

          E  ES:100  修改傅家塅100H号单元内容

  4.U命令——反汇编

    将汇编语言源程序经过汇编(编译)后生成的二进制的机器指令代码,用U指令变为助记符形式的汇编指令,称为反汇编。

      

      多次键入U,可连续显示后面的程序部分。

      U后跟偏移地址  则从该地址开始反汇编【U  0  从代码段0号单元开始反汇编】

      特别注意:图中显示的不是用户编写的程序,因为在输入debug是为加上   用户程序名.exe。这段程序代码可能是系统代码段中的保存信息或无效的代码。

  5.A命令——输入汇编指令

      在debug中,用A命令可以输入汇编指令,系统自动调用将键入的汇编指令翻译成机器代码,并相继地存放在从指定地址开始的存储区中。由于debug下的数值默认为16进制,则先将10进制转为16进制

      

  6.T/P命令——单步执行

    输入完指令后,应该执行此命令。

    T命令可以一条一条地执行指令。T命令还可以连续执行多条命令:T  执行次数  (- T  3  执行3次)。也可以设置开始地址和执行次数:T   =开始地址    次数(-T  =0100   3  从0100H开始连续执行3条指令)

    P命令的作用与T命令相同,当遇到中断指令INT n和调试指令CALL时,应该使用P命令,以确保程序正常执行。(原因:INT  n指令和CALL指令要转移要子程序执行,T命令进入子程序后可能无法返回,而P命令则可直接执行该指令,并将结果带回),遇到循环指令LOOP时也应该用P指令,可以使循环快速结束。

  7.G命令——连续执行程序

  8.Q命令——退出debug

时间: 2024-07-29 18:38:28

《汇编语言》学习笔记4——DEBUG的相关文章

小甲鱼零基础汇编语言学习笔记第六章之包含多个段的程序

在前面的几个章节中,我们的程序都是只有一个代码段,本章我们开始学习如何编写包含多个段的程序. 1.在代码段中使用数据 首先考虑这样一个问题,计算以下8个数据的和,结果存放在ax寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 在前面的课程中,我们都是累加某些内存单元中的数据,并不关心数据本身,可现在我们要累加就是已经给定了数值的数据. 代码如下: 1 assume cs:codesg 2 codesg segment 3 dw 0123H

小甲鱼零基础汇编语言学习笔记第五章之[BX]和loop指令

这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀. 1.[BX]的概念 [BX]和[0]类似,[0]表示内存单元的偏移地址是0.要完整描述一个内存单元,需要两种信息:内存单元的地址,内存单元的长度(类型).[BX]同样也表示一个内存单元,它的偏移地址在bx中,比如指令:mov ax,[bx].这里我们以一个程序为例: 1 assume cs:codesg 2 codesg segment 3 start: mov

小甲鱼零基础汇编语言学习笔记第四章之第一个汇编程序

1.使用工具 代码编写:NotePad++,代码编译器:MASM 2.一个源程序从写出到执行的过程 第一步,使用文本编辑器,用汇编语言编写汇编源程序,这一步产生一个存储源程序的文本文件. 第二步,对源程序进行编译,连接.使用MASM.exe对源程序文件进行编译,产生目标文件,再使用LINK.exe对目标文件进行连接,生成可在操作系统中直接运行的可执行文件.可执行文件包括两个部分,程序(从源程序的汇编指令翻译过来的机器码)和数据(源程序中定义的数据):相关的描述信息 (程序有多大,要占多少内存空间

【Objective_C学习笔记】Debug表达方式

经常在源码中看到类似于如此定义debug模式 #if DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d\n%s\n", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #else #define NSLog(FORMAT, ...) nil #endif 其中对那些_

汇编语言学习笔记(8)——数据处理的基本问题

1.只有"bx.si.di. bp"四个寄存器可以用在[-]中来进行内存单元的寻址 2.这四个寄存器可以单个出现也可以以[by+zi]形式出现,其中y=x或p,z = s或d ,其他格式均为错误的. 3.当使用bp时,如果没有显性地给出段地址,则段地址默认在ss段寄存器中. 4.汇编语言中用三个概念来表达数据的位置: 立即数(idata): 直接包含在机器指令中的[数据](执行前在CPU的[指令缓冲器中]),在汇编指令中直接给出 寄存器 指令要处理的[数据]在[寄存器]中,在汇编指令中

汇编语言学习笔记(二)

六.选择结构 if-then结构 C语言版本 if(count == 10) { count --; i++; } MASM汇编 .if count==10 dec count inc i .endif cmp指令,该指令用于比较两个参数大小 cmp mem, imm 比较内存mem和立即数imm大小 cmp reg, imm 比较寄存器reg和立即数imm大小 cmp reg, mem 比较寄存器reg和内存mem大小 cmp mem, reg 比较内存mem和寄存器reg大小 cmp imm

汇编语言学习笔记(五)

十六.数组 数组的基本表示方法 numary sdword 2,5,7 numary数组中有三个元素,为sdword类型,分别为2,5,7 empary sdword ?, ?,? empary数组为sdword类型元素,未初始化. 如果数组元素很多可通过 zeroary sdword 100 dup(0) zeroary数组中有100个0 empary sdword 3 dup(?) empary 数组中有3个未初始化的sdword类型数据 mov eax, numary+8; 表示把数组nu

汇编语言学习笔记(三)

八.逻辑运算指令 数字在计算机中以二进制存储,每个位数字为0或者1,当两个二进制数字进行逻辑按位&,逻辑按位|,逻辑异或^操作, 可以采用汇编语言提供的逻辑运算指令and,or, xor,not等指令. and指令: C语言&操作,将0110&1101得出结果为0100 C语言代码为 if(flag & maskit) count++; 汇编语言高级指令可实现: mov eax, flag .if eax & maskit inc count .endif 不采用高

汇编语言学习笔记2

1.严格来说汇编语是由以下三部分组成: 1.汇编指令:助记符,即用英语字符替换机器码 2.伪指令:由编译器编译执行,即Mov等控制指令 3.其它符号:由编译器编译执行,计算机是不能识别"+","-"等符号,所以需要编译器编译成机器语言 2.汇编语言的核心是汇编指令,他决定汇编语言的特性 3.我们都知道CPU是计算器的核心部分,想让CPU工作,必须向他提供指令和数据,指令即告诉计算机让它做什么,数据是告诉计算机,让它拿哪些数据做 4.指令和数据在存储器中存放,也就是平