粤ICP备11076303号  广州青年志愿者协会医疗服务总队 www.gzyld.org.cn
加入医疗队
加入志愿者

位置:GZ医疗队公益纪实公益站长系统软件

Debug-PC之开山老祖(3)


来源:      作者:      点击:次      时间:2007-03-20

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主要命令  

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 [list]  
例如,-E DS:100 F3'XYZ'8D  
其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。  
第二种格式则是采用逐个单元相继修改的方法。命令格式为:  
-E address  
例如,-E DS:100  
则可能显示为:  
18E4:0100 89.-  
如果需要把该单元的内容修改为78,则用户可以直接键入78,再按"空格"键可接着显示下一个单元的内容,如下:  
18E4:0100 89.78 1B.-  
这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。  
·填写命令F(FILL),其格式为:  
-F range list  
例如:-F 4BA:0100 5 F3'XYZ'8D  
使04BA:0100~0104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。  
3)检查和修改寄存器内容的命令R(register),它有三种格式如下:  
·显示CPU内所有寄存器内容和标志位状态,其格式为:  
-R  
例如,-r  
AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000  
DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC  
18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000  
·显示和修改某个寄存器内容,其格式为:  
-R register name  
例如,键入  
-R AX  
系统将响应如下:  
AX F1F4  
:  
即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:  
新活动 回顶部
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
最新评论 进入详细评论页>>