无忧启动论坛

标题: DEBUG命令详解 [打印本页]

作者: gmxq    时间: 2005-4-1 10:54
标题: DEBUG命令详解
DEBUG命令详解
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.查看主板的生产日期,版本
  D ffff:05
  D fe00:0e
  
  2.模拟Rest键功能
  A
  :100 jmp ffff:0000
  :105
  g
  
  3.快速格式化软盘
  L 100 0 0 * ';插入一张己格式化软盘
  W 100 0 0 * ';放入一张欲格式化软盘
  注:* 分别为:720K e |1.2M id |1.44M 21 
  
  4.硬盘格式化两种方法
  (1)G=c800:05
  (2) A 100
  mov ax,0703
  mov cx,0001
  mov dx,0080
  int 13
  int 3
  g 100
  5.加速键盘
  A 
  mov ax,0305
  mov bx,0000
  int 16
  int 20
  rcx
  10
  n fast.com
  w
  q
  
  6.关闭显示器(恢复时,按任意键)
  
  A
  mov ax,1201
  mov bl,36
  int 10
  mov ah,0
  int 16
  mov ax,1200
  int 10
  rcx
  10
  n crt-of.com
  w
  q
  7.硬盘DOS引导记录的修复
  在软驱中放入一张己格式化软盘
  debug
  -l 100 2 0 1
  -w 100 0 50 1
  把软盘放入故障机软驱中
  debug
  -l 100 0 50 1
  -w 100 2 0 1
  -q
  8.清coms中setup口令
  debug
  -a
  mov bx,0038
  mov cx,0000
  mov ax,bx
  out 70,al
  inc cx
  cmp cx,0006
  jnz 0106
  int 20
  -rcx
  :20
  -nclearpassword.com
  -w
  -q
  注:以上适合super与dtk机,对于ast机,因为他的口令放在coms的4ch-51h地址处,只要将:mov bx,0038 改为: mov
  bx,004c即可
  9.取消coms的密码(将coms数据清为初始化)
  -o 70,10
  -o 71,10
  -g
  -q
  10.将硬盘主引导记录保存到文件中
  
  debug
  -a
  mov ax,0201
  mov bx,0200
  mov cx,0001
  mov dx,0080
  mov int 13
  int 3
  -rcx
  :200
  -nboot.dat
  -w
  -q 
  11.调用中断实现重启计算机(可以成文件)
  debug
  -a
  int 19
  int 20
  -rcx
  :2
  -nreset.com
  -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]
  例如,按指定范围显示存储单元内容的方法为:
  -d100 120
  18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...
  18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.
  7
  18E4:0120 8B
  其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
  2、修改存储单元内容的命令有两种。
  ·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:
  -E address