debug主要命令(编辑修改稿)内容摘要:

r register ;堆栈指针寄存器 段寄存器 CS Code segment register ;代码段寄存器,存放正在运行的程序指令 DS Data segment register ;数据段寄存器,存放当前运行程序所用的数据 SS Battery segment register ;堆栈段寄存器,定义了堆栈所在区域 ES Extra segment register ;附加段寄存器,存放附加的数据,是一个辅助性的数据区, 控制寄存器 IP Next instruction pointer register;指令指针寄存器,它用来存放代码段中的偏移地址,在程序运行的过程中,它始终指向下一条指令的首地址,它与 CS 寄存器联用确定下一条指令的物理地址 F Flag register;标志寄存器 NV UP EI PL NZ NA PO NC就是了,也有人称之为 PSW Program Status Wold 程序状态寄存器 (这里有一点必须讲明白的现在在,其实从奔腾开始这些寄存器 (除了所有段寄存器 ,标志寄存器 )都是 32 位的。 并且加多了两个 16 位段寄存器 FS,GS。 dos 下面看到这些寄存器 是 16位的。 要看 32位寄存器可以使用 softice。 对于 FS,GS的作用我也不是很清楚,希望有高手指点,谢谢。 ) 返回目录 2020526 09:45 IceMe 正式会员 积分 170 发贴 305 注册 2020315 来自 紫色星云 状态 离线 5)我们来编写我们的第一个用机械语言编写的程序 打印一个字符 (这里用机械语言的主要原因是考虑到有一些用户不懂汇编命令,现在就要让他有一个认识计算机程序实质是一些数字) PROMPT DEBUG按回车 E 100按回车 (在偏移地址为 100 的地方输入机械指令程序 ) B4按空格 02按空格 (在 AX 寄存器的前八位存入 02) B2按空格 41按空格 (在 DX 寄存器的后八位存入 41h, 41h 就是大写 A的 ASCII 码,身边有 ASCII 表的朋友可以对着表改改数字试一试 ) CD按空格 21按空格 (当 AH=02 时这是 DOS 显示输出的中断号 ) CD按空格 20按回车 (退出 DOS) G按回车 (程序运行,并在屏幕上显示出 A) 程序运行完以后你将看到 Program terminated normally(程序正常结束了 ). U 100按回车 (我们把它反汇编,就是把机械命令变为汇编语言指令) 107F:0100 B402 MOV AH,02 :0102 B2 MOV DL,41 :0104 CD21 INT 21 :0106 CD20 INT 20 (下面会有一堆无用的东西) (对了,你的段地址可能与我的段地址 CS=107F 不同哦 ) R按回车 (让我们来看看寄存器的值。 IP==100h, AX==0000h, DX==0000h) 好极了,我 们看到电脑又做好了准备下一次运行程序了。 T按回车 (执行第一步操作 ... IP=102h, AX=0200h,指令指针寄存器指向下一条命令, AX的值被改变。 T按回车 (执行第二步操作 ... IP=104h, , DX=0041h,指令指针寄存器指向下一条命令,DX 的值被改变。 P按回车 (继续执行 INT 21, IP=106h, AX=02h,) P按回车 (继续执行 INT 20) Q按回车 (退出 DEBUG) (注意:你必须小心使用 T.因为如果你在程序完结 以后继续执行这条命令,因为我们无法预知下面的指令是什么,所以我们也无法预知它可能带来的后果 ) C:\WINDOWSDEBUG E 100 127C:0100 G A Program terminated normally U 100 127C:0100 B402 MOV AH,02 127C:0102 B241 MOV DL,41 127C:0104 CD21 INT 21 127C:0106 CD20 INT 20 127C:0108 C706F1E30900 MOV WORD PTR [E3F1],0009 127C:010E EB59 JMP 0169 127C:0110 57 PUSH DI 127C:0111 BFF1E3 MOV DI,E3F1 127C:0114 8BDF MOV BX,DI 127C:0116 06 PUSH ES 127C:0117 0E PUSH CS 127C:0118 07 POP ES 127C:0119 32D2 XOR DL,DL 127C:011B EB34 JMP 0151 127C:011D 006B12 ADD [BP+DI+12],CH R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=127C ES=127C SS=127C CS=127C IP=0100 NV UP EI PL NZ NA PO NC 127C:0100 B402 MOV AH,02 T AX=0200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=127C ES=127C SS=127C CS=127C IP=0102 NV UP EI PL NZ NA PO NC 127C:0102 B241 MOV DL,41 T AX=0200 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000 DS=127C ES=127C SS=127C CS=127C IP=0104 NV UP EI PL NZ NA PO NC 127C:0104 CD21 INT 21 P A AX=0241 BX=0000 CX=0000 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000 DS=127C ES=127C SS=127C CS=127C IP=0106 NV UP EI PL NZ NA PO NC 127C:0106 CD20 INT 20 P Program terminated normally Q C:\WINDOWS 返回目录 6) 我们现在用汇编语言指令来做和例 5 一样的事情 PROMPT DEBUG按回车 A 100按回车 (在偏移地址为 100 的地方输入汇编语言程序 ) MOV AH,02按回车 (选用 DOS 的 02 号功能调用,显示输出 ) MOV DL,按回车 (在 DX 寄存器的后八位存入 41h, 41h就是大写 A的 ASCII 码,身边有ASCII 表的朋友可以对着表改改数字试一试 ) INT 21按回车 (当 AH=02 时这是 DOS 显示输出的中断号 ,显示 A) INT 20按回车 (退出 DOS) 按回车 (结束汇编语言编程状态,回到 DEBUG 命令状态) G =100按回车 (运行程序,其实 可以不要 =100因为一般默认启始位置是 100) Q按回车 (退出 DEBUG) C:\WINDOWSDEBUG A 100 127C:0100 MOV AH,02 127C:0102 MOV DL,41 127C:0104 INT 21 127C:0106 INT 20 127C:0108 G A Program terminated normally Q 返回目录 7) 现在,我们不但要编写一个汇编程序,而且我们还要把它存盘 (下面这个程序就要比原来的程序复杂一点了 显示输出 :ABC) PROMPT DEBUG按回车 (运行 DEBUG 程序。 系统默认启始 IP 寄存器值为 100h) A 100按回车 (用汇编语言编写一个程序,启始地址是 100h) MOV AH,02按回车 (选择 DOS 的 02 号功能调用 , 显示输出 ) MOV DL,按回车 (在 DX 寄存器的后八位存入 41h, 41h 就是大写 A的 ASCII 码 ) INT 21按回车 (当 AH=02 时这是 DOS 显示输出的中断号 ,显示 A) MOV DL,42按回车 (在 DX 寄存器的后八位存入 41h, 41h 就是大写 B 的 ASCII 码 ) INT 21按回车 (当 AH=02 时这是 DOS 显示输出的中断号 ,显示 B) MOV DL,43按回车 (在 DX 寄存器的后八位存入 41h, 41h 就是大写 C 的 ASCII 码 ) INT 21按回车 (当 AH=02 时这是 DOS 显示输出的中断号 ,显示 C) INT 20按回车 (程序结束,退出 DEBUG) 按回车 (结束汇编命令输入,回到 DEBUG 命令输入 ) R BX按回车 (查看寄存器 BX 的值 ) :0000按回车 (设置 BX 为 0000h,这是程序的结尾地址是 BX:CX) (注意,只要 BX = 0000, 文件的大小就小于 64 Kb.) R CX按回车 (设置 CX 为 Fh,这是程序的长度 :16 位 ) :0010按回车 (现在我们可以把这个 16 字节的程序写入硬盘了 ) N 按回车 (将要存盘的程序命名 ) W按回车 (把这十六字节写到文件里面 ) Q按回车 (退出 DEBUG) PROMPT DIR 按回车 这里将会报告这个文件的大小是 16 字节 (10h 字节 ). PROMPT 按回车 会马上在屏幕上打印出 ABC C:\WINDOWSDEBUG A 100 127C:0100 MOV AH,02 127C:0102 MOV DL,41 127C:0104 INT 21 127C:0106 MOV DL,42 127C:0108 INT 21 127C:010A MOV DL,43 127C:010C INT 21 127C:010E INT 20 127C:0110 R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=127C ES=127C SS=127C CS=127C IP=0100 NV UP EI PL NZ NA PO NC 127C:0100 B402 MOV AH,02 R BX BX 0000 : R。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。