汇编语言debug常用命令.docx

上传人:b****5 文档编号:14286591 上传时间:2023-06-22 格式:DOCX 页数:62 大小:40.04KB
下载 相关 举报
汇编语言debug常用命令.docx_第1页
第1页 / 共62页
汇编语言debug常用命令.docx_第2页
第2页 / 共62页
汇编语言debug常用命令.docx_第3页
第3页 / 共62页
汇编语言debug常用命令.docx_第4页
第4页 / 共62页
汇编语言debug常用命令.docx_第5页
第5页 / 共62页
汇编语言debug常用命令.docx_第6页
第6页 / 共62页
汇编语言debug常用命令.docx_第7页
第7页 / 共62页
汇编语言debug常用命令.docx_第8页
第8页 / 共62页
汇编语言debug常用命令.docx_第9页
第9页 / 共62页
汇编语言debug常用命令.docx_第10页
第10页 / 共62页
汇编语言debug常用命令.docx_第11页
第11页 / 共62页
汇编语言debug常用命令.docx_第12页
第12页 / 共62页
汇编语言debug常用命令.docx_第13页
第13页 / 共62页
汇编语言debug常用命令.docx_第14页
第14页 / 共62页
汇编语言debug常用命令.docx_第15页
第15页 / 共62页
汇编语言debug常用命令.docx_第16页
第16页 / 共62页
汇编语言debug常用命令.docx_第17页
第17页 / 共62页
汇编语言debug常用命令.docx_第18页
第18页 / 共62页
汇编语言debug常用命令.docx_第19页
第19页 / 共62页
汇编语言debug常用命令.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编语言debug常用命令.docx

《汇编语言debug常用命令.docx》由会员分享,可在线阅读,更多相关《汇编语言debug常用命令.docx(62页珍藏版)》请在冰点文库上搜索。

汇编语言debug常用命令.docx

汇编语言debug常用命令

Debug常用命令集

 

名称解释格式

a(Assemble)逐行汇编a[address]

c(Compare)比较两内存块crangeaddress

d(Dump)内存16进制显示d[address]或d[range]

e(Enter)修改内存字节eaddress[list]

f(fin)预置一段内存frangelist

g(Go)执行程序g[=address][address...]

h(Hexavithmetic)制算术运算hvaluevalue

i(Input)从指定端口地址输入ipataddress

l(Load)读盘l[address[driverseetor]]

m(Move)内存块传送mrangeaddress

n(Name)置文件名 nfilespec[filespec...]

o(Output)从指定端口地址输出oportadressbyte

q(Quit)结束 q

r(Register)显示和修改寄存器r[registername]

s(Search)查找字节串 srangelist

t(Trace)跟踪执行 t[=address][value]

u(Unassemble)反汇编u[address]或range

w(Write)存盘 w[address[driversectorsecnum]]

?

联机帮助?

debug小汇编a命令

debug小汇编a命令是一个很有用的功能,许多的小程序都要他来做。

编一些小程序比汇编要来得方便,快洁。

在Debug中,中断是非常有用的,首先,让我们先了解一下中断。

  所谓中断,其实,就是,当你做某事时,有人过来找你有其他事,你先放下手中的事(计算机中,称为保护现场),再去与叫你的那个人办事去,等完了,你又回,接着做刚才的事。

这是个很通俗的讲法。

  计算机在运行时,也会出现这种情况,我们叫之中断。

 下面是他的一些常用中断向量的入口值详解:

(记住哦,很用的...呵呵)

IBMPC中断 int10

ooH屏幕方式设置

入口:

AH=0,AL=显示方式代码(0--6)

   0:

40*25 黑白  

   1:

40*25 彩色

   2:

80*25 黑白

   3:

80*25 彩色文本

   4:

320*200 彩色

   5:

320*200 黑白

   6:

640*200 黑白图形模式

   7:

80*25 单色字符(单色显示器) 

0BH 色彩设置

入口:

AH=0B,BL=0 设背景色,BH=0--15  BL=1 设调色码,BH=0--1

0CH 写图形点

入口:

AH=0C,CX:

DX=列号:

行号,AL=颜色

ODH 读图形点

入口:

AH=0D,CX:

DX=列号:

行号

返回:

AL=颜色

0EH 在当前页、当前光标处写字符

入口:

AH=0E,AL=字符的ASCII码,BL=前景色

OFH 显示器状态

入口:

AH=0F

返回:

AL=当前显示器方式,AH=屏幕列数,BH=当前页号

01H 光标设置

入口:

AH=1,CH=光标起始行号(00--0C),CL=光标结束行号(00--0C)

注:

CH > CL

02H 光标定位

入口:

AH=2,BH=页号,DH:

DL=起始行:

03H 读光标位置

入口:

AH=3,BH=页号。

返回:

DH:

DL=起始行:

06H 窗口上卷

入品:

AH=6,AL=窗口上卷行数,CH:

CL-DH:

DL 窗口坐标

注:

AL=0 卷动整个窗口

07H 窗口下卷

入口:

AH=7,AL=窗口下卷行数,CH:

CL-DH:

DL 窗口坐标

08H 读当前光标处字符和属性

入口:

AH=8,BH=页号。

返回:

AH:

AL=字符的颜色:

字符的ASCII码

注:

颜色代码见下对照表

09H:

在当前光标处写字符和属性

注:

光标不下移

入口:

AH=9,BH=页号,BL:

AL=字符的颜色:

字符的ASCII码,CX=重复次数

12345678

BLRGBIRGB

闪烁 字符底色 加亮 字符颜色

中断向量号表

中断号解释中断号解释

0除数为0错19引导装入程序

1音步中断1A日时调用

2不可屏蔽中断NMI1B键盘阻断时得到控制权

3断电中断(CCH)1C时钟中断时得到控制权

4溢出中断1D指向CRT初始参数表

5屏幕打印中断1E指向盒带参数表

6-7保留1F1KB图形模式

8计时器中断(18.2秒)20结束DOS程序

9键盘中断21DOS功能调用

A-D保留22结束地址(建义用EXEC)

E软盘机中断23DOSCrtl-Break退出地址

F保留24DOS致命错向量

10屏幕I/O调用25DOS绝对磁盘读

11设备检查调用26DOS绝对磁盘写

12存储器检查调用27结束程序并驻留(建义用31h)

13软盘机I/O调用28-3FDOS保留

14RS-233I/O调用40-7F未用

15盒带机I/O调用80-85BASIC保留

16键盘I/O调用86-F0BASIC解释程序用

17打印机I/O调用F1-FF未用

18ROM-BASIC入口

指令名详解

call指令(过程调用)(控制指令-长转移)

详解:

段内直接调用

段内间接调用(寄存器)

段内间接调用(存储器)

段间直接调用

段间间接调用

指令名

jmp指令(无条件转移指令)(控制指令-长转移)

详解:

段内直接跳转

短段内直接跳转

段内间接跳转(寄存器)

段内间接跳转(存储器)

段间直接跳转

段间间接跳转

指令名

ret指令(过程返回)(控制指令-长转移)

详解:

段内返回

段内返回立即数加于sp

段间返回

段间返回立即数加于sp

na/jnbe指令(控制指令-短转移) 不小于或不等于时转移

jae/jnb指令(控制指令-短转移) 大于或等于时转移

jb/jnae指令(控制指令-短转移) 小于转移

jbe/jna指令(控制指令-短转移) 小于或等 于转移

jg/jnle指令(控制指令-短转移) 大于转移

jge/jnl指令(控制指令-短转移) 大于或等于转移

jl/jnge指令(控制指令-短转移) 小于转移

jle/jng指令(控制指令-短转移) 小于或等 于转移

je/jz指令(控制指令-短转移) 等于转移

jne/jnz指令(控制指令-短转移) 不等于转移

jc指令(控制指令-短转移) 有进位时转移

jnc指令(控制指令-短转移) 列进位时转移 

jno指令(控制指令-短转移) 不溢出时转移

jnp/jpo指令(控制指令-短转移) 奇偶性为奇数时转移

jns指令(控制指令-短转移) 符号位为"0"转移

jo指令(控制指令-短转移) 溢出转移

jp/jpe指令(控制指令-短转移) 奇偶性为偶数时转移

js指令(控制指令-短转移) 符号位为"1"时转移

loop指令(循环控制指令-短转移) cx 不为0时循环

loope/loopz指令(循环控制指令-短转移) cx不为0且标志z=1时循环

 

loopne/loopnz指令(循环控制指令-短转移) cx不为0且标志z=0时循环

jcxz指令(循环控制指令-短转移) cx为0时转移

★int指令(中断指令) 中断指令(后详解)

into指令(中断指令) 溢出中断

iret指令(中断指令) 中断返回

指令名

shl指令(逻辑左移)

sal指令(算术左移)

shr指令(逻辑右移)

sar指令(算术右移)寄存器,1

rol指令(循环左移)寄存器,cl

ror指令(循环右移)存储器,1

rcl指令(通过进位的循环左移)存储器,cl

rcr指令(通过进位的循环右移)(逻辑运算)

not指令(取反运算)寄存器求反

(逻辑运算)存储器求反

and指令(与运算)(逻辑运算)

 

寄存器and寄存器 寄存器

寄存器and存储器 寄存器

存储器and寄存器 存储器

立即数and存储器 存储器

立即数and累加器 累加器

or指令(或运算)(逻辑运算)

寄存器or寄存器 寄存器

寄存器or存储器 寄存器

存储器or寄存器 存储器

立即数or存储器 存储器

立即数or累加器 累加器

test指令(测试)(逻辑运算)

 

寄存器test寄存器 

寄存器test存储器

寄存器test立即数

存储器test立即数

累加器test立即数

   

movs指令(串传送)(字符串操作指令)

单个传送

重复传送

   

cmps指令(串比较)(字符串操作指令)

单个比较

重复比较

   

scas 指令(串扫描)(字符串操作指令)

单个搜索

重复搜索

   

lods指令(装入串)

(字符串操作指令)

单个装载

重复装载

   

stos指令(保存串)(字符串操作指令)

单个存储

重复存储

mov指令(传送字或字节)(数据传送命令) 

寄存器与寄存器间传送

存储器与寄存器间传送

立即数传送给存储器

立即数传送给寄存器

存储器传送给累加器

累加器传送存储器

寄存器传送给段寄存器

存储器传送给段寄存器

段寄存器传送给寄存器

段寄存器传送给存储存器

   

pop指令(把字弹出堆栈)(数据传送命令)

push指令(把字压入堆栈) 

存储器

寄存器

段寄器   

xchg指令(交换字或字节)(数据传送命令) 

寄存器与寄存器交换

存储器与寄存器交换

寄存器与累加器交换

  

in指令(端口输入)(数据传送命令)

直接输入

间接输入

   

out指令(端口输出)(数据传送指令) 

直接输出

间接输出

   

add指令(加法)(算术指令)

adc指令(带进位加法) 

寄存器+寄存器 寄存器

寄存器+存储器 寄存器

存储器+寄存器 存储器

立即数+存储器 存储器

立即数+累加器 累加器

   

inc指令(加1)(算术指令) 

存储器增量

寄存器增量

   

sub指令(减法)(算术指令)

sbb指令(带借位减法) 

寄存器-寄存器 寄存器

寄存器-存储器 寄存器

存储器-寄存器 存储器

立即数-存储器 存储器

立即数-累加器 累加器

   

dec指令(减1)(算术指令) 

存储器减量

寄存器减量

   

nec指令(求反,以0减之) 

寄存器求补

存储器求补

   

cmp指令(比较)(算术指令) 

寄存器与寄存器比较

寄存器与存储器比较

寄存器与立即数比较

存储器与立即数比较

累加器与立即数比较

   

mul指令(无符号乘法)(算术指令)

imul指令(整数乘法) 

与8位寄存器相乘

与16位寄存器相乘

与8位存储单元相乘

与16位存储单元相乘

   

div指令(无符号除法)(算术指令)

idiv指令(整数除法) 

被8位寄存器除

被16位寄存器除

被8位存储单元除

被16位存储单元除

Debug实战

1.查看主板的生产日期,版本

Dffff:

05

Dfe00:

0e

2.模拟Rest键功能

A

:

100jmpffff:

0000

:

105

g

3.快速格式化软盘

L10000*'插入一张己格式化软盘

W10000*'放入一张欲格式化软盘

注:

*分别为:

720Ke|1.2Mid|1.44M21 

4.硬盘格式化两种方法

(1)G=c800:

05

(2)A100

movax,0703

movcx,0001

movdx,0080

int13

int3

g100

5.加速键盘

A 

movax,0305

movbx,0000

int16

int20

rcx

10

n

w

q

6.关闭显示器(恢复时,按任意键)

A

movax,1201

movbl,36

int10

movah,0

int16

movax,1200

int10

rcx

10

ncrt-

w

q

7.硬盘DOS引导记录的修复

在软驱中放入一张己格式化软盘

debug

-l100201

-w1000501

把软盘放入故障机软驱中

debug

-l1000501

-w100201

-q

8.清coms中setup口令

debug

-a

movbx,0038

movcx,0000

movax,bx

out70,al

inccx

cmpcx,0006

jnz0106

int20

-rcx

:

20

-

-w

-q

注:

以上适合super与dtk机,对于ast机,因为他的口令放在coms的4ch-51h地址处,只要将:

movbx,0038 改为:

mov

bx,004c即可

9.取消coms的密码(将coms数据清为初始化)

-o70,10

-o71,10

-g

-q

10.将硬盘主引导记录保存到文件中

debug

-a

movax,0201

movbx,0200

movcx,0001

movdx,0080

movint13

int3

-rcx

:

200

-nboot.dat

-w

-q 

11.调用中断实现重启计算机(可以成文件)

debug

-a

int19

int20

-rcx

:

2

-

-w

-q

DEBUG主要命令

DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

一、DEBUG程序的调用

在DOS的提示符下,可键入命令:

C:

\DEBUG[D:

][PATH][FILENAME[.EXT]][PARM1][PARM2]

其中,文件名是被调试文件的名字。

如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。

如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。

命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。

在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。

二、DEBUG的主要命令

1、显示存储单元的命令D(DUMP),格式为:

_D[address]或_D[range]

例如,按指定范围显示存储单元内容的方法为:

-d100120

18E4:

0100c70604023801c706-06020002c7060802G...8.G.....G...

18E$:

01100202bb0402e80200-CD20505156578B37..;..h..MPQVW.

7

18E4:

01208B

其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。

这里没有指定段地址,D命令自动显示DS段的内容。

如果只指定首地址,则显示从首地址开始的80个字节的内容。

如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。

2、修改存储单元内容的命令有两种。

·输入命令E(ENTER),有两种格式如下:

第一种格式可以用给定的内容表来替代指定范围的存储单元内容。

命令格式为:

-Eaddress[list]

例如,-EDS:

100F3'XYZ'8D

其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:

0100到0104的原先的内容。

第二种格式则是采用逐个单元相继修改的方法。

命令格式为:

-Eaddress

例如,-EDS:

100

则可能显示为:

18E4:

010089.-

如果需要把该单元的内容修改为78,则用户可以直接键入78,再按"空格"键可接着显示下一个单元的内容,如下:

18E4:

010089.781B.-

这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。

·填写命令F(FILL),其格式为:

-Frangelist

例如:

-F4BA:

01005F3'XYZ'8D

使04BA:

0100~0104单元包含指定的五个字节的内容。

如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。

3)检查和修改寄存器内容的命令R(register),它有三种格式如下:

·显示CPU内所有寄存器内容和标志位状态,其格式为:

-R

例如,-r

AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000

DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC

18E4:

0100C70604023801MOVWORDPTR[0204],0138DS:

0204=0000

·显示和修改某个寄存器内容,其格式为:

-Rregistername

例如,键入

-RAX

系统将响应如下:

AXF1F4

即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:

-Rbx

BX0369

059F

则把BX寄存器的内容修改为059F。

·显示和修改标志位状态,命令格式为:

-RF系统将响应,如:

OVDNEINGZRACPECY-

此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:

OVDNEINGZRACPECY-PONZDINV

即可,可见键入的顺序可以是任意的。

4)运行命令G,其格式为:

-G[=address1][address2[address3…]]

其中,地址1指定了运行的起始地址,如不指定则从当前的CS:

IP开始运行。

后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

5)跟踪命令T(Trace),有两种格式:

·逐条指令跟踪

-T[=address]

从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。

如未指定地址则从当前的CS:

IP开始执行。

·多条指令跟踪

-T[=address][value]

从指定地址起执行n条指令后停下来,n由value指定。

6)汇编命令A(Assemble),其格式为:

-A[address]

该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。

必须注意:

DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。

7)反汇编命令U(Unassemble)有两种格式。

·从指定地址开始,反汇编32个字节,其格式为:

-U[address]

例如:

-u100

18E4:

0100C70604023801MOVWORDPTR[0204],0138

18E4:

0106C70606020002MOVWORDPTR[0206],0200

18E4:

010CC70606020202MOVWORDPTR[0208],0202

18E4:

0112BBO4O2MOVBX,0204

18E4:

0115E80200CALL011A

18E4:

0118CD20INT20

18E4:

011A50PUSHAX

18E4:

011B51PUSHCX

18E4:

011C56PUSHSI

18E4:

011D57PUSHDI

18E4:

011E8B37MOVSI,[BX]

如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

·对指定范围内的存储单元进行反汇编,格式为:

-U[range]

例如:

-u10010c

18E4:

0100C70604023801MOVWORDPTR[0204],0138

18E4:

0106C70606020002MOVWORDPTR[0206],0200

18E4:

010C

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2