




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言实验教程一、常用DOS命令 1. 进入虚拟DOS选中开始菜单中的“运行”命令,输入cmd 后按确定,可以进入虚拟DOS环境。如图所示:打开窗口后,可以在属性中修改字体大小、颜色和窗口大小。并且可以用组合键ALT+ENTER进行窗口最大化。2. 常用DOS命令(1)查看目录命令DIR C:>dir C:>dir/w(2)显示文件内容命令TYPE C:>type test.asm(3)文件拷贝命令COPY C:>copy sa.asm sd.asm 将文件sa.asm拷贝为sd.asm(4)改变盘符命令 C:>e: 结果为:E:>(5)进入下一
2、级目录 C:>cd 子目录名 例如:C:>cd masm5 得:C:masm5>(6)改变目录 例如:C:>cd windowstemp 得:C:>windowstemp>(7)退到上级目录 例如:C:>masm5>abc>cd. 得:C:>masm5(8)退到根目录 例如:C:>masm5>cd 得:C:>(9)清屏 例如:C:>cls3. DOS下常用快捷健(1)清除当前命令行:ESC(2)输入上次输入的命令:F5(3)显示曾经输入的所有命令供选择并执行:F7(4)搜索命令的历史记录,循环显示所有曾经输入的
3、命令,直到按下回车键为止:F8【技巧1】虚拟DOS下复制粘贴方法在窗口上点击鼠标右键,选择“标记”后可以用鼠标选择需要复制的字符,点一下右键,然后在光标处点右键选“粘贴”即可。【技巧2】虚拟DOS窗口增加滚动条在虚拟DOS窗口中选属性->布局-> 屏幕缓冲区大小->将“高度”改为80以上。二、程序的编辑、编译和链接下面我们完整的完成一个实验,实验要求为在计算机屏幕上显示一个字符串“HELLO!”,具体步骤如下。1. 调用文本编辑软件建立源程序.ASM文件。利用Windows2000操作系统附件中的“记事本”编辑以下源程序。命名为:Test1.ASM,该程序的功能是在
4、计算机屏幕上显示一个字符串“HELLO!”。DATASEGMENTS1DBHELLO!,$DATAENDSSTACKSEGMENTPARA STACKDB 64 DUP(?)STACKENDSCODE SEGMENTMAIN PROC FARASSUMECS:CODE,DS:DATA,SS:STACKSTART:PUSH DS MOV AX,0 PUSH AXMOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AH,09HMOV DX,OFFSET S1INT 21HRETMAIN ENDPCODE ENDS END START2. 调用汇编程序MASM对
5、源程序汇编产生.OBJ文件。在C:提示符下键入MASM Test1.ASM(回车)执行上述操作命令之后将在屏幕上显示如下信息:Microsoft(R) Macro Assembler Version 5.00Copyright(C) Mirosoft Corp 1981-1985,1987.All rights reservedObject filenameTest1.OBJ:(回车)Source listingNUL.LST:(回车)Cross referenceNUL.CRF:(回车)50678 + 410090 Bytes symbol space free0 warning Error
6、s0 Severe Errors在汇编过程中,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。在汇编过程中还会产生列表文件和交叉引用文件。列表文件的后缀为.LST,主要用于给出源程序和机器代码程序的清单,以供检查程序使用。交叉引用文件的后缀为.CRF,它是一个为源程序所引用的各种符号进行前后对照的文件,主要用于给出不同程序段中互相引用的全部符号列表。这两个文件是可有可无的,如果不需要生成这两个文件,可以在汇编过程中直接按回车跳过。列表文件有两部分内容。在第一部分源程序中,最左列是数据或指令在该段从0开始的相对偏移地址,向右依次是
7、指令的机器代码字节个数、机器代码和汇编语言语 句。机器代码后有字母"R"表示该指令的立即数/位移量现在不能确定或是只是相对地址,它将在程序连接或进入主存时才能定位。带有“*”的处理器指令是由 前面一条伪指令产生的,采用/Sg选项时的列表文件才罗列。如果陈序中有错误(ERROR)或警告(WARMING),也会会在相应位置提示。列表文件的第二部分是标示符使用情况。对段名和组名给出他们的名字(NAME)、尺寸(Size)、长度(Length)、定位(Align)、组合 (Combine)和类别(Class)属性;对符号给出他们的名字、类型(Type)、数值(Value)和属性(A
8、ttr)。采用简化段定义格式,有 许多汇编系统的预定义标示符,例如DATA等。【小技巧】输入“MASM test1; ”(后面加个分号)可以省去中间文件生成的3次提示而直接生成.obj文件3. 调用链接程序LINK对目标文件进行链接产生可执行文件。在C:提示符下键入LINK Test1(回车)执行上述命令后将在屏幕上显示如下信息:Microsoft(R) Overlay Linker Version 3.6Copyright(C) Mirosoft Corp 1983-1987.All rights reserved Run FileTest1.EXE List FileNUL.MAP: Li
9、braries.LIB:在汇编过程中形成了目标文件(.OBJ),但是在该文件中,只是将源程序的操作码部分变成了机器码,而地址操作数还是可浮动的相对地址,不是实际地址,浮动地址需要再定位。只有经过链接过程才能形成最后的可执行文件。链接程序的功能就是把一个或多个目标文件合并成一个可执行文件,其后缀为.EXE。其实在链接过程中一共形成两个文件:第一个是可执行文件(.EXE)。默认的可执行文件名字与源程序文件相同,也可以根据用户要求进行修改可执行文件的名字。链接过程中形成的第二个文件是内存映像文件(.MAP),它给出了每个段的地址分配情况和长度。如果不需要该文件则可以在链接命令执行时直接键入回车键。在
10、链接过程中还与一个库文件(.LIB文件)相关。一般的汇编程序不需要库文件。但是当汇编语言与高级语言(如C语言)接口时需要用到库文件。此时输入相应的库文件名字即可。映像文件也是一种文本文件,含有每段在存储器中的分配情况。映像文件中首先给出了该程序各个逻辑段的起点(Start)、终点(sTOP)、长度(Length)、段名(Name)和类别(Class);然后是段 组(GROUP)位置和组名;最后提示程序开始执行的逻辑地址。注意,这里的起点、终点和段地址是以该程序文件开头而言的相对地址,实际的绝对地址需要在程序进入主存后确定。【小技巧】输入“LINK test1; ”(后面加个分号)可以省去中间文
11、件生成的2次提示而直接生成可执行文件4. 运行可执行文件。在C:提示符下键入Test1(回车),在屏幕上将显示出“1”这个数字。三、调试工具DEBUG介绍 1.调试程序DEBUG的特点 如果汇编语言的源程序中存在一些语法或格式上的错误,在汇编和链接过程中都可以发现并得到纠正。但是如果在源程序中存在着算法错误和逻辑错误,那就只有在调试过程中才能发现并纠正了。常用的调试工具软件是DEBUG。DEBUG提供了修改寄存器、内存单元内容的命令,可以很方便的修改寄存器、内存单元的内容,为调试程序、修改程序带来了方便。在DEBUG状态下,还为用户提供了调试、控制测试的环境。用户可以在此环境下进行编辑、调试、
12、执行一些简单的汇编程序。由于DEBUG有显示命令。通过显示命令,用户可以观察某个内存单元的内容、CPU内部某个寄存器的内容。并可以根据这些内容的变化情况分析、调试程序。调试程序debug具有如下功能特点:1. 装入,显示或修改任何文件(带任何扩展名的文件);2. 执行DOS程序;3. 测试和调试程序4. 完成磁盘实际读/写操作;5. 建立、汇编汇编语言源程序或反汇编可执行文件。2. DEBUG的命令格式DEBUG.EXE是DOS提供的可用于调试可执行程序的一个工具软件,也是可用于汇编语言程序设计的一种调试工具。调试程序DEBUG.EXE是版本有关的,不同版本的操作系统具有不同的文件(功能一样)
13、。纯DOS操作系统,DEBUG.EXE在DOS目录下;Windows 9x操作系统,使用Windows文件夹下command子文件夹的DEBUG.EXE文件;Windows 2000/XP操作系统,使用WINNT文件夹下system32子文件夹的DEBUG.EXE文件。需要说明的是,windows操作系统中要使用debug.exe进行程序调试,必须进入到虚拟DOS中,具体方法是在运行对话框中输入“cmd”后回车即可。然后,在DOS的提示符下,可键入如下命令启动Debug调试程序: DEBUG drive:pathfilename.exeparameters命令中各字段含义如
14、下:Drive:DEBUG将要调试的文件所在的磁盘驱动器。 Path:查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。 filename.exe:DEBUG将要调试的文件名。如果用户键入文件名,则启动DEBUG的同时还将指定的文件装入存储器中,用户可对其进行调试,如果未键入文件名,则用户可用当前存储器的内容工作,或者用DEBUG命令N和L将需要的文件装入存储器后再进行调试。 parameters :运行被调试的程序(或文件)时所需的命令行参数。 在DEBUG程序调入后,将出现提示符“-”,此时就可用DEGUG命令来调试程序。说明:· (1) 运行
15、Debug程序时,如果不带被调试程序,则所有段寄存器值相等,都指向当前可用的主存段,即DEBUG程序后的第一个段;除SP之外的通用寄存器都设置为0,而SP指示当前堆栈顶在这个段的尾部或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址);指令指针寄存器IP置为0100H(程序段前缀PSP后的第一个语句);状态标志都是清0状态。 · (2) 运行Debug程序时,如果载入的被调试程序扩展名不是.EXE(如debug hello.asm),则BX、CX包含被调试文件大小的字节数(BX为高16位),其他同不带被调试程序的情况。 (3) 运行Debug程序时,如果带入的被调试程序扩
16、展名是.EXE,则需要重新定位。此时,CS : IP和SS : SP根据被调试程序确定,分别指向代码段和堆栈段。DS=ES指向当前可用的主存段(即PSP段基址),BX、CX包含被调试文件大小的字节数(BX为高16位),其他通用寄存器为0,状态标志都是清0状态。3. DEBUG的主要命令Debug 的每个命令都是一个字母,后面跟一个或多个参数,所需注意事项如下:* 字母不区分大小写* 命令中各项之间以空格或逗号分隔* 命令中只能使用16进制数,且要求不带后缀H* 可用组合键Ctrl-C 或Ctrl-Break终止命令的执行* 可用F1、F2、F3、Ins、
17、Del、左移键、右移键等编辑键来编辑本行命令* 若命令有语法错误,会提示“Error”,并用“”符号指出错误位置Debug的主要命令及含义如下表所示:命令格式功能说明A地址输入汇编指令C范围 起始地址对由“范围”指定的区域与“起始地址”指定的同大小区域进行比较,显示不相同的单元D范围显示指定范围内的内存单元内容E地址 字节值表用值表中的值替换从“地址”开始的内存单元内容F范围 字节值表用指定的字节值表来填充内存区域G=起始地址 断点地址从起点(或当前地点)开始执行,到终点结束H数值1 数值2显示二个十六进制数值之和、差I端口地址从端口输入L地址 驱动器号 扇区 扇区数从磁盘读M范围 地址把“范
18、围”内的字节值传送到从“地址”开始的单元N文件标识符 文件标识符指定文件名,为读/写文件做准备O端口地址 字节值向端口输出P=地址 指令数按执行过程,但不进入子程序调用或软中断Q退出DEBUG,不保存正在调试的文件R寄存器名显示和修改寄存器内容S范围 字节值表在内存区域内搜索指定的字节值表。如果找到,显示起始地址,否则,什么也不显示T=地址 指令数跟踪执行,从起点(或当前地点)执行若干条指令U范围反汇编,显示机器码所对应的汇编指令W地址 驱动器号 扇区 扇区数向磁盘写内容,(BX、CX)为写入字节数说明:* 地址:用“段值:偏移量”的形式来表示地址,也可用段寄存器来代表“段值”例如:1000:
19、0001,ds:1001,es:0200,cs:0030等* 范围:表示地址范围从哪个地址开始到哪个地址结束。它有二种表示方式:(1)地址 地址前者表示起始地址,用“段值:偏移量”来表示;后者表示终止地址,只用“偏移量”来表示(2)地址 长度前者表示起始地址,用“段值:偏移量”来表示;后者表示该区域的大小,用字母L开头的数值来表示例如:100:50 100段值为100,偏移量从50到100的内存区域,100:50 L100段值为100,偏移量从50开始的100个字节区域。* 端口地址:二位十六进制数值* 字节值:二位十六进制数值* 字节值表:由若干个字节值组成,也可以是用引号括起来的字符串*
20、驱动器号:0驱动器A、1驱动器B、2驱动器C、3驱动器D等(1)A(汇编命令) 格式:A地址 用途:该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继的存放在内存从指定位置(缺省为IP指针位置)开始的存储区中。 注意: * 所有数值默认皆为十六进制整数,数值后不带“H”。 如要键入十进制数,则其后应加以说明,如100D。 * 不支持文件管理用的目录表、宏标记、条件汇编 * 跳转指令后要直接书写十六进制地址不支持标号
21、160; * 数据类型若非默认类型,要以PTR加以指定 * 字符串操作要指定类型为B或W(如lodsb和lodsw等)及长度 * 用DB和DW接受数据定义,直按进行汇编 * 对内存地址加以与立即数区分 * 如果不指定地址,a命令将在它上次停止处开始汇编 * 段超越指令需要在相应指令前,单独一行输入 举例: -A 1397:0100 MOV CX,5 1397:0103 MOV AL,0 1397:0105 MOV SI,0010 1397:0108 ES: 13
22、97:0109 ADD AL,SI 1397:010B INC SI 1397:010C LOOP 0108(2)C(比较命令)格式:C 范围 起始地址 用途:比较内存的两个区域相对应字节的内容是否相同,对发现有差别的内容及其地址用如下形式显示出(地址A为第一个区域某单元地址,地址B为第二个区域中与地址A相对应的存储单元的地址): 地址A 地址A中值 地址B中值 地址B说明:参数range指定要比较的内存第一个区域的起始和结束地址,或起
23、始地址和长度;参数address指定要比较的第二个内存区域的起始地址;若地址范围或地址不含段地址,默认为DS的值。举例:-C 100,109 200该命令对 100h 到 109h 的内存数据块与 200h 到 209h 的内存数据块进行比较。 Debug响应前面的命令并显示如下信息(假定此时 DS = 1397): 1397:0100 35 6E 1397:0300 1397
24、:0102 7D 1C 1397:0302 1397:0106 12 89 1397:0306 1397:0109 58 A4 1397:0309 内容不相等的存储单元的地址和内容会在列表中显示出来,对应内容相等则不会显示(3)D(显示内存命令)格式:D地址范围用途:内存内容显示指令,以十六进制和ASCII码形式显示指定范围内的内存内容。说明:地址范围指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。若不指定范围,第一次从
25、目标程序的CS:IP位置开始显示,以后从上次显示的末地址的下一地址开始进行显示。若不指定长度,则显示128字节共8行的内容。 举例:-D 0000 001F Debug 按以下格式显示范围中的内容: 1401:0000 48 45 4C 4C 4F 21 24 00-00 00 00 00 00 00 00 00 HELLO!$ . 1401:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 . .当使用 D 命令时,Debug
26、160;以两个部分显示内存内容:左边用十六进制表示每个字节; 右边用ASCII字符表示每个字节。每个非打印字符在显示的 ASCII 部分用“.”表示。每个显示行显示 16 字节的内容,其中在第8字节和第9字节之间有一个连字符。每个显示行从 16 字节的边界上开始。另外,这里没有指定段地址,D命令会自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。(4)E(输入/修改内存命令)格式:E 地址 字节值表 E 地址用途:向内存区域输入数据,覆盖掉原有数据。说明: *“地址”表示
27、数据输入的内存始地址,“字节值表”表示一组连续的字节数据。* 第一种格式可以用给定的字节值表的内容来替代指定范围的存储单元内容;第二种格式则是采用逐个单元相继修改的方法来达到输入或修改内存的目的。* 数据以十六进制形式或以ASCII码形式输入均可。 * 十六进制数要用空格、逗号或制表符加以分隔。字符串则要用单引号或双引号括起且区分大小写。 * 若不指写段址,则默认为DS中值。每写完一数据地址自动增加。 * 如省略字节值表,将对各单元逐个修改。点号前为该字节原始值,点号后输入改后值。这时若按空格,跳过这一字节;按回车,
28、 结束输入;按减号或连字符,显示前一字节内容。 * 字符串只能以数值列表的形式输入,不能按地址形式输入。举例:-E DS:100 F3'XYZ'8D其中F3,X,Y,Z和8D各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的容。-E CS:100则可能显示为:1397:0100 89. -如果需要把该单元的内容修改为78,则可以直接键入78,再按空格键可接着显示下一个单元的内容,这样可以不断修改相继单元的内容,直到Enter键结束该命令为
29、止。(5)F(填充内存命令)格式:F 地址范围数值列表用途:将数值列表中的数据写入内存,并覆盖原有信息。若出错,显示出错信息,原有信息保留。说明:* 输入数据以十六进制或字符串两种形式,字符串必须以单引号或双引号括起,区分大小写。* 若未指写段址,默认为DS寄存器值。* 若要填充区域大于数据数目,列表可重复使用;相反,若列表比要填充区域大时,则自动截断后面的数据。* 地址范围为数据输入的内存始本地址或首地址和长度举例:-F 04BA:100 L100 47 4F 4F 44命令执行后,Debug 重复使用值47 4F 4F 44填充从 04BA:100 到 04BA:1FF 的内存位置,直到所
30、有100H个字节全部填满为止。(6)G(执行程序命令)格式:G=地址断点0断点9用途:将CPU控制权由Debug转移给被调试中的程序,即运行当前在内存中的程序说明: * 地址:Debug开始执行的地址。如未指定段址,则使用目标程序的CS寄存器中的值。当地址省略时,则Debug使用目标程序的CS:IP寄存器的值开始执行。且为与断点区分,地址参数前必须加等号,否则将其认为是第零个断点。* 断点0断点9:指定的010个临时中断点。程序在断点处中止时,将会显示寄存器的内容、标志位状态及CS:IP指出的指令(也就是下一条将要执行的指令),然后是提示符“-”。 (7)H
31、(十六进制运算命令)格式:H 值1 值2用途:用来求两个十六进制数的和、差,对结果显示为值1+值2及值1-值2。如果值2 >值1则显示其补码。说明: * 值1、2为0FFFFH范围内的任意十六进制数。举例:H 19F 10A Debug 执行后显示结果为: 02A9 0095 (8)I(端口输入命令)格式:I 端口地址用途:用来读取指定I/O端口地址,并以2位十六进制数加以显示。说明:* 端口地址:0FFFF范围内的I/O端口地址。* 警告:I指令将直接访问计算机硬件,不是所以错误检查都能进行,所以使用是必须小心。对某个外设控制器分配端口的输入操作,可能干涉系统
32、固有的操作。(9)O(端口输出命令)格式:O 端口 字节 用途:向I/O端口地址写入一字节。说明:* 端口:I/O端口地址。 * 字节:写入I/O端口的0FFFF范围的值。 * 警告:错误的操作将导致系统崩溃。(10)L(加载命令) 格式:L 地址 或 L 地址 驱动器 开始扇区 扇区数用途:将某个文件或特定磁盘扇区的内容加载到内存。说明:
33、0; * 地址:存放从盘中读出数据的内存地址。* 驱动器:A=0, B=1, C=2, 以此类推。* 开始扇区:以十六进制数表示要最先装入的逻辑扇区号。* 扇区数:以十六进制数表示要装入连续扇区个数。* 装入后文件长度,或.exe文件程序的实际长度放入目标程序的BX和CX两个寄存器中。高十六位放在BX中。 举例:假定需要从驱动器 C 将起始逻辑扇区为 15 (0Fh) 的 109 (6Dh) 个扇区的内容加载到起始地址为 04BA:0100 的内存中,可以键入以下命令: -L 04BA:100 2 0f 6d (11)M(内存块移动命令)格式:M 地址范围 地址用途:对
34、内存中数据进行复制。目的域被覆盖。说明: * 地址范围:被复制域的始末地址,或始地址和长度。 * 地址:数据复制目的域的起始地址。 * 若地址范围中无段址,则使用DS内容;若地址中无段址,使用地 址范围中的值。 举例:-M CS:100 110 CS:500 Debug 首先将 CS:110 地址中的内容复制到地址 CS:510 中,然后将 CS:10F 地址中的内容复制到 CS:50F 中,如此操作直至将 CS:100 地址
35、中的内容复制到地址 CS:500 中。(12)N(命名命令)格式:N 驱动器 路径 文件名N 参数 参数用途:* 指定后面的 l(加载)或 w(写入)命令所使用的文件。* 指定被调试文件的命令行参数和开关举例:-D EBUG PROG.COM -N PARAM1 PARAM2 -G g命令会运行程序,就好像在命令提示符后键入了命令: PROG PARAM1 PARAM2(13)P(循环或子程序处理命令)格式:P =地址 命令数用途:该程序不间断运行,直到循环、重复字符串指令、软件中断或者完成了指定地址的子例程为止,或者直到执行了指定数量的机器指令为止,并控制返回到 Debug。说明: * 地址
36、:执行的起始地址。 * 指令数:执行的指令条数。* 执行中会显示目标程序寄存器内容、标志位状态和下一条要执行的指令。 * 若地址参数中无段地址,则使用CS中的值。完全忽略地址时,则从程序中的CS:IP指定位置开始执行。 举例:假定正在测试的程序在地址 CS:143F 处包含一个 call 指令。要运行 call 目标位置的子程序然后将控制返回到 Debug可以键入以下命令: P=143F(14)Q(Debug退出命令)格式:Q用途:程序结束返回,即退出DEBUG,返回DOS。本命令无存盘功能,如需存盘应先使用W命令(15)R(寄存器查看和修改命令)格式:R
37、 寄存器用途:显示或改变一个或多个 CPU 寄存器的内容说明: * 寄存器:AX BX CX DX SP BP SI DI DS ES CS IP PC F * 若R不带参数,则显示所有寄存器的内容和状态标志、下一条指令。 * 若指定新值,在显示内容后,给出冒句提示输入新值,回车结束。 * 对状态字F,在连字符“-”后以空格间隔输入新值,次序不计。 * 若直接回车,则跳过修改,寄存器内容不变。(16)S(内存检索
38、命令)格式:S 地址范围 列表用途:在指定的内存范围内检索列表的值。对每一个匹配的地址进行显示。说明:* 地址范围:想来你该明白是什么样了吧:) * 列表:欲检索的一个以上的字节值或字符串。* 若起地址中无段址,默认为DS的值。* 检索范围不得大于FFFFH* 列表必须以分隔符(空格,逗号,制表符等)分隔;字符串要加单引号或双引号括起,区分大小写。 举例:查找包含值 41 并且范围从 CS:100 到 CS:110 的所有地址,可用以下指令实现:-S CS:100 110 41 Debug会按以下格式显示结果: 04BA:0104 04BA:010D 以下
39、命令在 CS:100 到 CS:1A0 的范围内搜索字符串“Ph”。 SCS:100 1A0 "PH" (17)T(单步跟踪命令)格式:T =地址指令数用途:执行单条指令,显示寄存器的值及下一条指令。说明:* 地址:执行的第一条指令的地址。* 指令数:执行的机器指令的条数。* 在地址参数中若无段址,则默认为CS寄存器的值。若全部省略,则由CS:IP寄存器指出的地址开始执行,以后则顺序执行。* 对ROM内的跟踪应使用T命令。* 警告:对8259 中断屏幕的内容(IBM PC及兼容机端口20H和21H)的更 改,或者系统功能调用(INT 21H),不能使用T指令,对上述情况要使
40、用P指令。 (18)U(反汇编命令)格式:U 地址范围用途:反汇编字节并显示相应的原语句,其中包括地址和字节值。说明:* 地址范围中无段址时,默认使用CS值。* 当始地址与实际边界不一致时,结果将不可信。* 若不含末地址或长度,则自给定始地址起反汇编32个字节。* 以后由前次U最后一指令的下一指令做32字节的反汇编。* 若从没用过U,则于CS:IP开始进行反汇编。* 只能对8086指令解码,对其它以DB来显示。 举例:要反汇编 16 (10h) 字节,从地址 04BA:0100 开始,可以键入以下命令: -U 0B6D:100L10 Debug 按以下格式显示结果: 0B6D:0100 26
41、ES:0B6D:0101 894502 MOV DI+02,AX0B6D:0104 58 POP AX0B6D:0105 3C01 CMP AL,010B6D:0107 750A JNZ 01130B6D:0109 26 ES:0B6D:010A 895504 MOV DI+04,DX0B6D:010D 26 ES:0B6D:010E 894D06 MOV DI+06,CX(19)W(写磁盘命令)格式: W 地址 或 W 地址 驱动器 开始扇区 扇区数 用途:将内存中的文件写入到磁盘。说明:* 地址:待
42、写入盘的数据在内存中的起始位置。* 驱动器:写入数据的盘的驱动器号(A=0,B=1,C=2,以下类推)。* 开始扇区:写入数据的最前的逻辑扇区号(0FFFFH)* 扇区数:写入数据的连续扇区个数(0FFFFH)。* W若不带参数,或只有地址参数,则按BX:CX寄存器指出的字节,从内存向磁盘写入数据。此时的文件名是此命令前最后一个使用过的文件名,或者是N命令中指定的文件, 如果没有使用过N命令,则使用Debug命令行中指定的文件。* W命令不能向扩展名为.EXE或.HEX的文件中写入数据。但可以通过更改扩展名的方法让其能对.exe文件写入。* 若无地址项,则认为是目标程序的CS:0100H。*
43、该命令可不通过MS-DOS的文件系统直接访问磁盘的逻辑扇区。但必须以十六进制形式给在命令行中给定各参数。* W命令不能对用于网络上的驱动器进行逻辑扇区写入处理。* 警告:若参数有误,则可能破坏盘文件结构。请务必先搞清再作试践,特别是对硬盘的操作。 举例:假定要将起始地址为 CS:100 的内存内容写入到驱动器 B 的磁盘中。需要将数据从磁盘的逻辑扇区号 37h 开始并持续 2Bh 个扇区。为此,键入以下命令: -W CS:100 1 37 2B 当写操作完成时,Debug 再次显示 Debug 提示符。 四、应用DEBUG软件调试程序实验实验步骤1)进入
44、DEBUG环境在Windows2000环境下,按顺序选择“开始”“程序”“附件”“命令提示符”后进入DOS环境,键入“DEBUG”后即可进入DEBUG,此时屏幕上显示“_”提示符号。2)A(编辑命令)使用练习用DEBUG的A命令输入程序。_A1000357:0100MOVAL,340357:0102MOVDL,360357:0104ADDDL,AL0357:0106SUB DL,320357:0109MOVAH,20357:010BINT 210357:010DINT200357:010F (回车)键入A命令时,自动产生程序所存内存单元的段地址和偏移地址。程序输入结束时,只需键入回车键就可以退出汇编状态(A状态),回到DEBUG状态。注意:使用A命令时,只要注意起始地址的偏移地址从0100开始即可。至于前面的段地址是随机变化的(取决于当前内存使用情况),对此不必介意。3)C(比较命令)使用练习
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创意农业面试题目及答案
- 反馈技巧测试题及答案
- 微量泵的应用试题及答案
- 2024年纺织品检验员疑难解析试题及答案
- 2024年纺织品设计师证书试题及答案的前沿趋势试题及答案
- 民用航空概论试题及答案
- 后厨燃气安全试题及答案
- 国际美术设计师考试中的视觉创新方法试题及答案
- 建筑识图测试题及答案
- 浅析国际美术设计师考试的试题及答案
- 中药学-七版教材
- 配位化学-配合物结构的表征和测试研究课件
- 《文物保护技术概论》课件 8.第七章 壁画保护
- 公安派出所优质建筑外观形象设计基础规范
- 电力排管检验批
- 世界民族音乐鉴赏之欧洲篇课件
- 深度学习人工智能在医疗图像处理中的应用课件
- 自动涂胶机机械系统设计和实现 机械制造自动化专业
- 安徽省历年中考数学试卷,2014-2021年安徽中考数学近八年真题汇总(含答案解析)
- 护工培训课件课件
- 工业气体企业公司组织架构图职能部门及工作职责
评论
0/150
提交评论