当前位置:文档之家› 汇编语言源程序的编辑与调试过程.

汇编语言源程序的编辑与调试过程.

汇编语言源程序的编辑与调试过程.
汇编语言源程序的编辑与调试过程.

汇编语言源程序的编辑与调试过程

1.怎样在TD环境下载入被调试程序?

答:方法1:转到TD.EXE所在目录,在DOS提示符下键入以下命令:

C:\ASM>TD↙

进入TD后,按Alt-F键打开File菜单,选择Open,在文件对话框中输入要调试的程序名,按

回车。

方法2:转到TD.EXE所在目录,在DOS提示符下键入以下命令(假定要调试的程序名为HELLO.EXE):

C:\ASM>TD HELLO.EXE↙

方法3:在Windows操作系统中,打开TD.EXE所在目录,把要调试的程序图标拖放到TD 的

图标上。

2.在TD环境下如何编辑汇编指令?

答:

(1)用Tab键选择代码区为当前区域;

(2)用方向键把光标移到期望的地址处,如果是输入一个新的程序段,建议把光标移到CS:0100H处;

(3)打开指令编辑窗口,有两种方法:

一是在光标处直接键入汇编指令,在输入汇编指令的同时屏幕上就会自动弹出指令的临时编辑窗口。

二是用Alt-F10键激活代码区局部菜单,选择其中的汇编命令,屏幕上也会自动弹出指令

的临时编辑窗口。

(4)在临时编辑窗口中输入/编辑指令,每输入完一条指令,按回车,输入的指令即可出现在

光标处(替换掉原来的指令),同时光标自动下移一行,以便输入下一条指令。

3.在TD环境下如何查看/修改数据段的数据?

答:

(1)用Tab键选择数据区为当前区域;

(2)使用局部菜单中的“Goto”命令并结合使用方向键把光标移到期望的地址单元处(注意数

据区的光标是一个下划线),数据区就从该地址处显示内存单元的内容。

(3)若要修改该地址处的内容,则需打开数据编辑窗口。有两种方法:

一是在光标处直接键输入数据,在输入数据的同时屏幕上就会自动弹出数据编辑窗口。

二是用Alt-F10键激活数据区局部菜单,选择其中的“Change”命令,屏幕上也会弹出数据编

辑窗口。

(4)在数据编辑窗口中输入所需的数据,输入完后,按回车,输入的数据就会替代光标处的原

始数据。

4.在TD环境下如何修改寄存器内容?

答:

(1)用Tab键选择寄存器区为当前区域;

(2)用方向键把光标移到要修改的寄存器上;

(3)打开编辑输入窗口。有两种方法:

一是在光标处直接键入所需的值,在键入的同时屏幕上就会自动弹出编辑输入窗口。

二是用Alt-F10键激活寄存器区局部菜单,选择其中的“Change”命令,屏幕上也会弹出编辑

输入窗口。

(4)在编辑输入框中键入所需的值,然后回车,这个新的值就会取代原来该寄存器的内容。5.在TD环境下修改某个标志位内容,怎样操作?

答:

(1)用Tab键选择标志区为当前区域;

(2)用方向键把光标移到要修改的标志位上;

(3)按回车键或空格键即可使标志位的值在0、1之间变化。

6.指定程序的起始执行地址怎样操作?

答:方法一:

(1)用Tab键选择代码区为当前区域;

(2)用Alt-F10键激活代码区局部菜单,选择局部菜单中的“New CS:IP”命令。

方法二:

(1)用Tab键选择寄存器区为当前区域;

(2)用方向键把光标移到CS寄存器上,输入程序起始地址的段地址。

(3)用方向键把光标移到IP寄存器上,输入程序起始地址的偏移量。

7.在TD环境下怎样单步跟踪程序的执行?

答:(1)用上述第6条中的方法首先指定程序的起始执行地址;

(2)按F7或F8键,每次将只执行一条指令。

注:若当前执行的指令是CALL指令,则F7将跟踪进入被调用的子程序,而F8则把CALL 指令

及其调用的子程序当作一条完整的指令,要执行完子程序才停在CALL指令的下一条指令上。

8.在TD环境中,若只执行程序的某一部分指令,怎样处理?

答:方法一:用设置断点的方法。

(1)用上述第6条中的方法首先指定程序的起始执行地址;

(2)用方向键把光标移到要执行的程序段的最后一条指令的下一条指令的起始处(注意,不能

移到最后一条指令上,否则最后一条指令将不会被执行),按F2设置断点。也可按Alt-F2键,

然后在弹出的输入窗口中输入断点地址。

(3)按F9键执行,程序将会停在所设置的断点处。

方法二:用“运行程序到光标处”的方法。

(1)用上述第6条中的方法首先指定程序的起始执行地址;

(2)用方向键把光标移到要执行的程序段的最后一条指令的下一条指令上(注意,同方法一)。

(3)按F4键执行程序,程序将会执行到光标处停下。

方法三:用“执行到指定位置”的方法。

(1)用上述第6条中的方法首先指定程序的起始执行地址;

(2)按Alt-F9,在弹出的输入窗口中输入要停止的地址(即要在哪条指令起始处暂停,就输

入哪条指令的地址),按回车,程序将会执行到指定位置处暂停。

9.被调试程序的显示输出看不见怎么办?

答:在TD环境下按Alt-F5键。

10.用MASM编译时产生警告错误会影响结果吗?

答:会。警告错误是指仍然生成目标代码,并非是指目标代码是正确的。

11.在WIN2000和WINDOWS XP环境中可以使用命令行方式的EDIT编辑器和调试程序DEBUG吗?为什么点击该程序时会出现:Incorrect DOS version 的错误信息?

答:EDIT和DEBUG 属于系统命令程序文件,运行前要核对版本号,WIN98 / 2000 /XP有各自

配套的系统命令文件,使用上述两个软件时必须注意版本匹配。WIN98的命令文件放置在WINDOWS (或WIN98)文件夹下的COMMAND 子文件夹中;WIN2000/XP的系统命令文件路

径一般为:WINDOWS \SYSTEM32 或WINNT\SYSTEM32。

12.若使用DEBUG 调试运行程序,如何装入程序?

答:在命令行界面输入:DEBUG ABX . EXE 或双击DEBUG图标,之后在DEBUG 窗口中输

入:n ABC . EXE / L100 两条命令;运行程序即被载入。

13.在汇编语言源程序中怎样加入中文注释?

答:用记事本或C++编辑器编辑源程序。但须注意中英文切换,源程序中必须使用英文标点符

号。

14.用记事本工具编辑源程序,主名为123_ABCDEF . ASM,为什么编译程序MASM报告找

不到该文件?

答:MASM遵循MS-DOS的命名原则,即文件主名最长为8个字符,上述文件主名超过了规定。

15.用记事本工具编辑源程序,取名为123 . ASM,为什么编译程序MASM报告找不到该文

件?

答:出现此种情况,往往123 . ASM并非文件名的全部,其最后的扩展名仍是 .TXT,解决的办

法是:点击“我的电脑”或“资源管理器”在“查看”或“工具”菜单中选择“文件夹选项”,选择“查看”选项卡,将其中的“隐藏已知文件类型的扩展名”选项取消,可显示全部文件名,

再为文件重新命名。

16.已在程序中设有如下定义:STACK SEGMENT / DB 200 DUP(0) / STACK ENDS / 为

什么LINK 仍然警告:no stack segment ?

答:将段定义修改为:STACK SEGMENT STACK ;后面的STACK项是组合类型,即不再

出现警告信息。

17.使用DEBUG调试程序,如何设置断点?

答:例如,在DEBUG命令窗口中输入:G=100,0150;表示从代码段偏移地址100H执行到150H

处中断,届时可通过各寄存器及存储器察看程序的中间结果。

18.用TD 调试一个显示字符串的程序,当单步运行至:/ MOV AL, 09 / INT 21H/ 语句后,

程序似乎变得冗长难耐,是什么原因?

答:在INT 21H处单步运行,即进入了DOS系统调用中断程序服务程序,其中包含了从0 ~ 62H

个功能子程序,用参数AH区分。9号功能只是其中一个分支,内中还要有输入输出底层处理。

运行至此,应该将TD窗口的光标置于INT下一条语句前,按F4键,即以光标所在处为断点,就可自动执行完该调用程序。

第三章 8086汇编语言程序格式

第三章8086汇编语言程序格式 练习题 3.4.1 单项选择题 1.下列选项中不能作为名字项的是()。 A.FH B.A3 C.3B D.FADC 2.下列指令不正确的是()。 A.MOV AL,123 B.MOV AL,123Q C.MOV AL,123D D.MOV AL,123H 3.下列指令不正确的是()。 A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A 4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=()。 A.0 B.1 C.2 D.3 5.若定义“A EQU 100”,执行“MOV AX,A”后,AX=()。 A.A的偏移地址B.A单元中的内容 C.100 D.A的段地址 6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。 A.10 B.20 C.22 D.24 7.若定义“C DD 2,4”,则该伪指令分配()个字节单元。 A.2 B.4 C.6 D.8 8、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。 A、DEBUG B、LINK C、MASM D、EDIT 9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件。 A..LST B..EXE C..MAP D..ASM 10.LINK命令执行后可以生成一个以()为扩展名的文件。 A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义()字节。 A.1M B.64K C.32K D.16K 12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。 A.BYTE B.WORD C.PARA D.PAGE 13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。 A.相同B.长C.短D.不定 14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。 A.相同B.快C.慢D.不定 15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。 A.源程序B.目标程序C.汇编程序D.连接程序

汇编语言对文件简易加密解密

课程设计报告 课程微机原理课程设计 题目简易文件加密解密 系别物理与电子工程学院 年级08级专业电子科学与技术 班级三学号0502083(02 14 23 24) 学生姓名崔雪飞陈祥刘刚李从辉 指导教师居伟骏职称讲师 设计时间2011-4-18 ~ 2011-4-22

目录 第一章绪论 (2) 第二章分析与设计 (3) 2.1 题目 (3) 2.2 要求 (3) 2.3 方案设计与论证 (3) 2.3.1 整体设计思路 (3) 2.3.2 方案选择 (3) 2.4结构框图等设计步骤 (4) 第三章实验程序及分析 (6) 3.1 宏定义 (6) 3.2 加密模块 (9) 3.3 解密模块 (9) 3.4 加密和解密算法子程序 (10) 第四章实验结果及问题处理 (12) 4.1 实验结果 (12) 4.2出现的问题以及解决的方案 (13) 4.2.1 文件写操作问题 (13) 4.2.2 读入缓冲区的大小问题 (14) 4.2.3不同文件类型加解密问题 (14) 4.2.4 文件结束标志 (15) 第五章总结与体会 (16) 参考文献 (18) 附录 (19)

第一章绪论 随着计算机硬件的发展,微机系统的功能越来越强,而且计算机的程序设计语言也经过了一个发展的过程。从最基本的机器语言到汇编语言,并到高级的智能化语言,如visual C++、visual Basic等,不断前进。 汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语合中,用助记符( Memoni )代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。 汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。 对给定的文件进行加密是当今计算机科学中的一个非常热门话题。在本课程设计中,目的是给给定的文件进行加密和解密,加密方法有:文件里文本的二进制与10101010B作求和,解密则相应的与10101010B相减。课设只是把所学的知识加以应用,不能轻视题目的简单,我们要借此机会,加强汇编语言的学习,并加深自己的知识。 在设计中,程序应用了BIOS中一些系统中断,设计了人性化的界面,这些是自学的汇编知识并加以应用,当然也有很多DOS系统的功能调用。总之,自己结合平时所学和最近的自学,认真的完成课题,并很好的实现了相应的功能。

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版 【课后习题答案】--囮裑為檤 第3章汇编语言程序格式 〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用? 〔解答〕 伪指令语句与硬指令语句的本质区别是能不能产生CPU动作; 伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。 〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成? 〔解答〕 为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符; 汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。 〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。 〔解答 保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。如定义字节数和字符串的DB就是伪指令助记符。 〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成? 〔解答〕 汇编语句有执行性语句和说明性语句; 执行性语句由标号、硬指令助记符、操作数和注释四部分组成; 说明性语句由名字、伪指令助记符、参数和注释四部分组成 〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕 ⒈编辑文本编辑程序汇编语言源程序.asm ⒉汇编汇编程序目标模块文件.obj ⒊连接连接程序可执行文件.exe或.com

⒋调试调试程序应用程序 〔习题3.6〕区分下列概念: (1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量 〔解答〕 (1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。 (2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。 (3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。 〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。 (1)mov byte ptr [bx],1000 (2)mov bx,offset myword[si] (3)cmp mybyte1,mybyte2 (4)mov al,mybyte1+mybyte2 (5)sub al,myword (6)jnz myword 〔解答〕 (1)1000超出了一个字节范围 (2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si] (3)两个都是存储单元,指令不允许 (4)变量值只有执行时才确定,汇编过程不能计算 (5)字节量AL与字量myword,类型不匹配 (6)Jcc指令只有相对寻址方式,不支持间接寻址方式 〔习题3.8〕OPR1是一个常量,问下列语句中两个AND操作有什么区别? AND AL,OPR1 AND 0feh 〔解答〕

实验一 汇编语言程序的调试与运行

实验一汇编语言程序的调试与运行 一、实验目的 1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。 2.掌握数据在内存中的存放方式和内存操作数的寻址方式。 3.掌握汇编语言源程序的组成格式。 4.掌握8086/8088指令及伪指令的格式及用法。 5.掌握汇编语言源程序的编辑、调试及运行方法。 二、实验准备知识 1.DEBUG程序的启动 DEBUG是专门为汇编语言设计的一种汇编语言调试工具,它通过单步执行,设置断点连续执行等方式为汇编语言程序员提供了非常有效的调试手段。 在DOS提示符下,可输入命令: C>DEBUG [d:][path][文件名][ 参数1][参数2] 其中文件名是被调试文件的名称,它必须是执行文件(.EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“–”,此时,可键入所需的DEBUG命令。 在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改,显示和执行。如果没有文件名,则是以当前内存的内容进行工作。 2.DEBUG的主要命令 1)汇编命令A 格式:– A [起始地址] 功能:该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。 2)反汇编命令U (1)格式1:– U [起始地址]

功能:该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 (2)格式2:– U [起始地址终止地址] 格式3:– U [起始地址L 字节数] 功能:该命令对指定范围的内存单元进行反汇编。例如: 3)运行命令G 格式:– G [= 起始地址1][断定点地址2[断点地址3……]] 功能:从指定地址开始执行程序。在设定的断点处程序暂停,并显示全部寄存器内容和下一条要执行的指令。 一般设置断点前最好用U命令查看一下指令开始的地址。断点数最多为10个。 如:– G=100 108 4)跟踪命令(单步执行)T 格式1:– T [=起始地址] 格式2:– T [=起始地址指令条数] 功能:从指定地址开始执行程序,每次执行一条指令,然后显示各寄存器的内容和状态寄存器的内容,及以助记符形式表示的下一条指令。 如:– T=100 5)显示内存单元内容的命令D 格式1:– D [起始地址] 格式2:– D [起始地址终止地址] 格式3:– D [起始地址L 字节数] 功能:显示指定内存单元的内容。 6)修改内存单元内容的命令E (1)用给定的内容代替指定范围的单元内容 格式:– E 地址内容表 例如:– E 2000:0100 F3 "XYZ" 8D 其中F3、"X"、"Y"、"Z"和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,"X"、"Y"、"Z"将分别存入其ASCII码值。

汇编语言上机操作

汇编语言上机操作 一、建立子文件夹 如:D:\hb\masm 二、复制相关文件 把masm.exe、link.exe、ml.exe三个文件复制到上述文件夹中。 三、进入DOS方式 开始/运行/cmd 当前提示符可能是: C:\documents and settings\administrator> 四、常用DOS操作命令 1、改变当前盘 输入d: 并回车,屏幕显示: D:\> 2、改变当前目录 1)进入下一级目录 D:\>cd hb 回车后,屏幕显示: D:\hb>cd masm 回车后,屏幕显示: E:\hb\masm> 问题:可以一次进入下面二级或多级目录吗? 2)返回上一级目录 D:\hb\masm>cd.. 回车后,屏幕显示: D:\hb\>cd.. 回车后,屏幕显示: D:\> 问题:可以直接返回根目录吗? D:\hb\masm>cd\ 回车后,屏幕显示: D:\> 3、显示当前目录容 D:\>dir /p 分页显示当前目录容 问题:如何显示d:\text中的容? D:\>dir d:\text↙ 4、DOS方式下如何运行程序? DOS方式下的可执行文件(即程序文件)扩展名为.exe或.,运行时只需要在系统提示符下输入文件主名即可。例如,有一个文件名为test.exe,存入在D:\hb\masm 中,运行时,可以这样做: D:\hb\masm>test↙ 五、汇编语言上机过程 1、编辑源程序 运行:edit 回车后,进入EDIT环境,输入完后存盘(file/save)并退出(file/exit)。

2、汇编 D:\hb\masm>masm add5.asm↙ 生成目标程序文件add5.obj。(如果有语法错误,会提示错误所在行号和错误类型)3、连接 D:\hb\masm>link add5↙ 生成可执行文件add5.exe。 六、DEBUG程序调用及汇编语言程序调试方法 调试程序DEBUG是DOS支持的又一种系统软件,主要用于汇编语言程序的调试。汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地方。DEBUG程序为用户提供多种命令,大致有:显示和修改寄存器和存贮单元的容;执行程序中任意一段或一条指令;汇编单条源语句和反汇编机器码指令;查找字符代码;端口的输入和输出;文件装入存和写入磁盘等。用户利用这些命令可以查出任何程序功能上的错误。下面说明DEBUG程序的启动方法和主要命令意义。 (一)DEBUG程序的启动 DEBUG程序有两种启动方法。DEBUG程序是在DOS盘上的一个独立的可执行程序(扩展名为.COM),所以,DEBUG程序的第一种启动方法就是把它看作和一般的可执行程序一样,只要打入DEBUG和回车键,就可以把它装入存。但是这样启动只把DEBUG 程序本身装入存并进入等待DEBUG命令状态,还没有把要调试的程序装入存。第二种启动DEBUG的程序的方法是一次相继装入DEBUG程序和要调试的程序。打入的命令格式如下: DEBUG[d:][path]filename[.ext][parml][parm2] 其中的Filename是要调试程序的文件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。可选项[parml]和[parm2]是DEBUG程序为要调试程序准备的参数(一般不用)。 例进入DEBUG程序并装入要调试程序。其操作如下: D:\hb\masm>DEBUG add5.exe (进入DEBUG,并装配add5.exe) 此时屏幕上出现一个短线,这表示可以使用DEBUG命令了。 如果启动DEBUG时没有指定要调试的文件名,则需要用N命令指定要调试的文件,再用L命令将其装入存。操作如下: D:\hb\masm>debug↙ - n add5.exe↙ - l↙ (二)DEBUG命令 在说明每个命令之前,先说明一些共同信息: ■DEBUG命令都是以一个英文字母开头,后面跟一个或多个参数。 ■命令字母和参数可用大写或小写或混合形式。 ■命令字母和参数中,相邻两个十六进制之间必须用逗号或空格分开.其它各部分之间有无空格或逗号都可以。 ■执行任何命令期间都可用Ctrl+Break键方法结束命令的执行。

汇编语言程序设计练习题及参考答案

一、单项选择题 从每小题的四个备选答案中,选出一个正确答案,并将正确答案的番号填人括号内。 1.用来存放下一条将要执行的指令地址的寄存器是(B) A.SP B.IP C.BP D.CS 2.要使串处理从低地址向高地址进行,应把标志位置为(D) A.IF=1B.TF=0 C.DF=1D.DF=0 3.使状态标志位CF清零的错误指令是(C) A.OR AX,AX B.SUB AX,AX C.MOV CF,0D.CLC 4.设SP=1110H,执行PUSH AX指令后,SP的内容为(B) A.SP=1112H B.SP=110EH C.SP=1111H D.SP=110FH 5.汇编源程序出现语法错误的指令有(D) A.MOV[BX+SI],AL B.MOV AX,[BP+DI] C.MOV DS,AX D.MOV CS,AX 6.下列串操作指令中,必须同时指明源串和目的串地址的指令是(D) A.STOSW B.LODSW C.SCASW D.CMPSW 7.设BL中有一无符号数,实现把BL中的数乘以2,应选用的指令是(B) A.SHR BL,1B.SHL BL,1 C.SAR BL,1D.RCR BL,1 8.执行PUSH AX指令的正确步骤是(A) A.1.SP←SP-1,(SP)←AH B.1.(SP)←AH,SP←SP-1 2.SP←SP-1,(SP)←AL2.(SP)←AL,SP←SP-1 C.1.SP←SP+1,(SP)←AH D.1.(SP)←AH,SP←SP+1 2.SP←SP+1,(SP)←AL2.(SP)←AL,SP←SP+1 9.CF=1时转移到目标地址的条件转移指令是(B) A.JNC B.JC C.JZ D.JS 10.在执行NEG指令时,对标志位CF有影响,其影响的规则是(C) A.对正数求补时,CF=0B.对负数求补时,CF=0 C.对非零数求补时,CF=1D.对零求补时,CF=1 11.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是(A) A.目的操作数最高位为0B.目的操作数最高位为1 C.目的操作数为任意情况D.无论什么情况都不可能相同 12.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是(D) A.AX=0032H B.AX=00E0H C.AX=03E0H D.AX=0FFE0H 13.指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,下面指令中语法正确的是(D) A.MOV AX,BUFl*BUF2 B.MOV AX,BUF1/BUF2 C.MOV AX,BUF1+ES:BUF2

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

汇编语言调试DEBUG命令详解

汇编语言调试DEBUG命令详解 1、显示命令D ① D [地址] ② D [范围] 如不指定范围,一次显示8行×16个字节。 -D ;默认段寄存器为DS,当前偏移地址 -D DS:100 / -D CS:200 -D 200:100 -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10 2.修改命令E ① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。 ② E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。 -E DS:100 F3 ‘AB’ 8D。 3.添充命令F F 范围数据表; 将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。 -F DS:0 L5 01,02,03,04,05 -F DS:0 L5 01 02 03 04 05(空格分隔) -F DS:0 L5 FF ;5个字节重复使用FF 4.显示修改寄存器命令R R;★显示所有寄存器和标志位状态; ★显示当前CS:IP指向的指令。 显示标志时使用的符号: 标志标志=1 标志=0 OF OV NV DF DN UP IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC

5.汇编命令A A [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释:①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。 6.反汇编命令U ① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。 ② U 范围;对指定范围的单元进行反汇编。 -U -U100 -U100L10 7.运行程序命令G ① G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。 ② G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。 ③ G 断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。 ④G=地址断点1[,断点2,…断点10] -G ;从CS:IP指向的指令开始执行程序。 -G=100 ;从指定地址开始执行程序。 -G=100 105 110 120 8.跟踪命令(单步执行命令)T ① T;从当前IP开始执行一条指令。 ② T 数值;从当前IP开始执行多条指令。 ② T =地址; ③ T =地址数值; -T -T5 / -T=100 5 9.跟踪执行并跳过子程序命令P P [=地址] [数值];类似T命令,但跳过子程序和中断服务程序。 10.退出DEBUG命令Q Q;返回DOS环境。 -Q 11.命名命令N N 文件标示符;指定文件,以便用W命令在磁盘上生成该文件,或者用L命令从磁盘装入该文件。 -N MY_https://www.doczj.com/doc/b1412036.html,

汇编语言源程序的编辑、汇编、连接的方法

汇编语言源程序地编辑、汇编、连接地方法一、编辑源程序 汇编语言源程序:用汇编语句编写地解决应用问题地程序. 汇编程序:将汇编语言源程序翻译成机器语言程序地系统. 汇编:将汇编语言程序翻译成机器语言程序地过程. 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立码文本文件地软件即可. ()编辑软件 行编辑软件: 全屏编辑软件:、、、、等. 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成地文件扩展名一定是. ()汇编程序 有汇编、宏汇编及等,一般使用宏汇编,因它比功能强.适用于系列指令系统所编写地汇编语言程序,是比较先进地汇编工具. ()连接程序 用连接程序或,将产生地机器代码程序()文件连接成可执行程序,比更先进. ()辅助工具程序() 进行汇编语言程序调试和文件格式转换地程序有: 动态调试程序 文件格式转换程序 交叉引用程序 编辑、汇编、连接、调试过程如图所示.

(简称)也是动态调试程序,可在和环境下运行,用户界面十分友好. 二、汇编源程序 用编辑软件建立地源程序文件,必须经过汇编才能产生文件.为此,需键入: :> <源文件名> 或:> 按前一种格式键入,屏幕上显示: () () [<>]: []: []: 以上信息中方括中为该项提示地缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键. 汇编后生成以下几个文件: ()文件 文件是必须生成地一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个文件,供下一步连接用. 若源程序有语法错误时,会出现错误信息提示: 源程序文件行错误信息代码错误说明信息 最后信息提示:

8086汇编语言上机调试步骤

8086汇编语言上机调试步骤 1、在网络课堂-微机原理与接口技术-实验指导-汇编工具下载,下载汇编工具并解压,文件夹名为“masm”。 2、用鼠标点击“masm”文件夹。进入该文件夹后将看到 MASM.EXE, LINK.EXE , DEBUG.EXE3个文件进行复制操作。 3、用鼠标点击“我的电脑”再点击D: 盘,并在 D: 盘上建立新的“ MASM”文件夹,最后将上面的3个文件全部复制到该文件夹中。(注意实验所有的文件都放在该文件夹内) 4、用文本编辑软件UltraEdit-32、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源 文件的扩展各一定要是“.asm”如: example.asm 。(建议用记事本输入源程序,另存时,保持类型选择“所有文件”如图所示) 5、进入MS-DOS方式 ( 从开始>程序>附件>命令提示符) 或者(从程序 > 运行输入“cmd”回车,进入MS-DOS环境。

6、进入D:>MASM文件夹 7、显示MASM文件夹内所有文件“dir”命令 8、在 DOS 提示符下进行汇编、连接、动态调试等操作。 例如: 对源文件 example.asm 进行的操作

D:\MASM\MASM example.asm;汇编源程序操作 D:\MASM\LINK example.dbj;连接并生成扩展名为 .EXE 的可执行文件 D:\MASM\DEBUG example.exe;对可执行文件进行调试 9、要求掌握的调试命令(在 DEBUG 中使用的命令) a: U - 反汇编命令 用法: -U 代码段地址:起始偏移地址如:-U CS:100 b: D - 显示内存中的数据命令 用法: -D 数据段地址:存放数据的偏移地址如:-D DS:00 20 c: T - 单步执行程序命令 用法: -T 要执行的指令条数如:-T 3 d: G - 连续执行程序命令 用法: -G=代码段地址:指令的起始偏移地址指令的结束偏移地址如: -G=CS:100 106 注意: 结束地址一定要是操作码的所在地址 e: R - 查看和修改寄存器数据命令 用法: -R 回车如:-R AX f: F - 对内存单元填充数据命令 用法: -F 数据段地址:偏移首地址偏移未地址填入的数据 如: -F DS:100 120 ff g: Q - 退出”DEBUG“应用程序命令 10、应用例子 ;二进制到BCD转换(a.asm) ;将给定的一个二进制数,转换成二十进制(BCD)码 DATA SEGMENT RESULT DB 3 DUP(?) DATA ENDS CODE SEGMENT

实验2 建立运行汇编语言源程序

实验2建立运行汇编语言程序 实验目的: 1.熟悉8088/8086的数据传送和算术运算指令的书写格式、功能。 2.编写源程序,掌握汇编语言程序格式。 3.掌握汇编、连接、运行汇编程序的全过程;使用DEBUG调试和运行汇编程序。 实验内容: 在硬盘E中建立自己的文件夹,以“班级姓名”命名(比如计科1111张三),实验文件以“实验次数-序号”命名,比如sy2-1.asm。 1、有3个内存单元x,,y z,其中x=1234h,y=0c3f6h,z=10c5h,请编写源程序,计算x+2z-y,结果保存在z单元中,并用debug调试运行查看结果,观察标志位变化。 2、写一个完整的源程序,用DEBUG调试运行,查看运行结果。 DATA SEGMENT;定义数据段DATA AUGEND DD99251 SUM DD? DATA ENDS ;请补充语句定义附加段EXTRA,将ADDEND赋值为双精度数-15962 CODE SEGMENT;定义代码段CODE ASSUME CS:CODE,DS:DATA,ES:EXTRA START:MOV AX,DAT MOV DS,AX ;请补充完成给ES赋值的语句,将EXTRA赋值给ES。 ;请补充进行加法运算的语句,把数据段DATA中的AUGEND和附加段EXTRA中的ADDEND相加,并把结果存放在DATA的SUM中。 MOV AX,4C00H INT21H CODE ENDS END START 3、完成实验教程第一章的内容。学习字符串处理指令(课本P75)和DOS显示字符串功能调用(课本P335),理解实验教程例题1.1的程序。 实验报告要求:

ARM汇编语言源程序格式

ARM汇编语言源程序格式ARM汇编语言源程序格式2010-11-16 13:52 来源:MCU嵌入式领域 常用ARM源程序文件类型 汇编语言程序的结构1 汇编语言程序的结构2 汇编语言程序的结构3 汇编语言程序的结构4 ARM的汇编语言程序一般由几个段组成,每个段均由AREA伪操作定义。 段可以分为多种,如代码段、数据段、通用段,每个段又有不同的属性,如代码段的默认属性为READONLY,数据段的默认属性为READWRITE。 本程序定义了两个段,第一个段为代码段codesec,它在存储器中存放用于程序执行的代码以及main函数的本地字符串;第二个段为数据段constdatasec,存放了全局的字符串,由于本程序没有对数据进行写操作,该数据段定义属性为READONLY。 汇编语言的行构成1 格式: [标签]指令/伪操作/伪指令操作数[;语句的注释] 所有的标签必须在一行的开头顶格写,前面不能留空格,后面也不能跟C 语言中的标签一样加上":";

ARM汇编器对标识符的大小写敏感,书写标号及指令时字母的大小写要一致; 注释使用";"符号,注释的内容从";"开始到该行的结尾结束 汇编语言的行构成2 标签 标签是一个符号,可以代表指令的地址、变量、数据的地址和常量。 一般以字母开头,由字母、数字、下划线组成。 当符号代表地址时又称标号,可以以数字开头,其作用范围为当前段或者在下一个ROUT伪操作之前。 指令/伪操作 指令/伪操作是指令的助记符或者定义符,它告诉ARM的处理器应该执行什么样的操作或者告诉汇编程序伪指令语句的伪操作功能。 汇编语言的标号1 标号代表地址。 标号分为段内标号和段外标号。段内标号的地址值在汇编时确定,段外编号的地址值在链接时确定。 在程序段中,标号代表其所在位置与段首地址的偏移量。根据程序计数器(PC)和偏移量计算地址即程序相对寻址。 在映像中定义的标号代表标号到映像首地址的偏移量。映像的首地址通常被赋予一个寄存器,根据该寄存器值与偏移量计算地址即寄存器相对寻址。 例如:

汇编语言调试及运行

汇编语言程序设计实验 实验一 汇编语言的调试和运行 班级: 姓名: 学号: 日期:

实验一汇编语言的调试和运行 一、实验目的 1、熟悉DEBUG程序和命令,并用它运行基本指令和察看运行结果。 ○1怎样调用Debug ②如何显示和修改内存单元 ③如何显示和修改CPU的寄存器 ④各标志位的状态是如何表示的,怎样修改标志寄存器 ⑤怎样汇编与反汇编 ⑥怎样执行程序 ⑦怎样跟踪程序 ⑧怎样命名和读写文件 ⑨怎样退出Debug 2、熟悉汇编中通用传送指令。 3、理解指令不同的寻址方式,注意规定或限制使用的寄存器如:双操作数 指令中,源操作数和目的操作数的地址不能同时为存储器地址,段跨越 前缀不能使用CS,操作对象是地址还是地址中的内容,指令隐含使用 的寄存器。 二、实验内容 1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '

2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。

3、用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII 码?

6、用DEBUG调试和运行下列程序,记录所用的DEBUG命令和运行结果。 MOV WORD PTR [1100],3445 MOV WORD PTR [1102],5678 MOV WORD PTR [1106],6732 MOV AX,[1100] SUB AX,[1102] ADD AX,[1106] MOV [1104],AX HLT 其中粗斜体的数字可以修改。

汇编语言上机过程

第一步:编写程序 用记事本编写汇编语言程序,保存为.ASM 文件,保存时,保存类型选择“所有文件”。注意,应将汇编语言程序保存在包含MASM.EXE 及LINK.EXE 的目录下(本例中假定在C盘的MASM目录下,即“C:\MASM”)。 第二步:编译 进入DOS命令提示符环境。该环境的访问方法一:windows “开始”->“运行”,输入“cmd”),如下图: 访问方法二:windows “开始”->“程序”->“附件”->“命令提示符”,如下图所示:

进入DOS命令提示符方式: 用CD 命令进入MASM目录,如下图所示: (若个人的MASM目录在D盘下,可如下操作:)

回车后即进入存放有MASM.EXE LINK.EXE EX11.ASM 的目录D:\MASM : 现在开始用汇编程序MASM.EXE 编译汇编语言源程序EX11.ASM: 回车后开始编译:

若编译出现0处错误(如上图椭圆框内),则表示编译通过,正确生成EX11.OBJ文件: 接下来转入第四步。否则,若出现如下类似界面: 表示出现一处错误,该错误在EX11.ASM的第七行,错误为“出现未定义的符号AS”,则转入第三步。 第三步:编辑程序 用 EDIT.EXE 编辑出现错误的程序 EX11.ASM:

回车后,出现如下界面: 找到第7行,并修改相应错误。修改完成后,点击菜单“File”或用“ALT”回车打开“File”菜单,首先选择“Save”保存修改,然后选择“Exit”退出编辑状态: 重复如下编译过程,重新编译修改过的EX11.ASM,直至全部错误修改完成:

汇编语言之程序的基本结构

第6章程序的基本结构在前面几章,我们分别介绍了用汇编语言进行程序设计所需要的几个最基本的知识:内存单元的寻址方式,变量定义和各种汇编指令格式。在掌握了这些基本内容之后,就需要学习如何把它们组成一个完整的汇编语言程序。 6.1 源程序的基本组成 汇编语言源程序的组成部分有:模块、段、子程序和宏等。一个模块对应一个目标文件,当开发较大型的应用程序时,该程序可能由若干个目标文件或库结合而成的。有关模块和子程序的知识和宏在第7章介绍,有关宏的知识将在第9章中叙述。 6.1.1 段的定义 微机系统的内存是分段管理的,为了与之相对应,汇编语言源程序也分若干个段来构成。8086CPU有四个段寄存器,在该系统环境下运行的程序在某个时刻最多可访问四个段,而80386及其以后的CPU都含有六个段寄存器,于是,在这些系统环境下开发的运行程序在某个时刻最多可访问六个段。 不论程序在某个时刻最多能访问多少个段,在编程序时,程序员都可以定义比该段数更多的段。在通常情况下,一个段的长度不能超过64K,在80386及其以后系统的保护方式下,段基地址是32位,段的最大长度可达4G。 段的长度是指该段所占的字节数:

、如果段是数据段,则其长度是其所有变量所占字节数的总和; 、如果段是代码段,则其长度是其所有指令所占字节数的总和。 在定义段时,每个段都有一个段名。在取段名时,要取一个具有一定含义的段名。 段定义的一般格式如下: 段名 SEGMENT [对齐类型] [组合类型] [类别] …;段内的具体内容 … 段名 ENDS 其中:“段名”必须是一个合法的标识符,前后二个段名要相同。可选项“对齐类型”、“组合类型”和“类别”的说明作用请见6.3节中的叙述。 一个数据段的定义例子: DATA1 S EGMENT word1 D W 1, 9078H, ? byte1 D B 21, 'World' DD 12345678H DATA1 E NDS 一个代码段的例子: CODE1 S EGMENT

汇编语言上机实验

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1) 编辑源程序(生成.ASM文件) (2) 汇编源程序(.ASM → .OBJ) (3) 连接目标程序(.OBJ → .EXE ) (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5) 运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM、DEBUG、LINK等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

汇编语言程序编写调试说明.

要在计算机上执行汇编语言程序,其操作步骤如下: 1. 编辑源程序 使用编辑软件将汇编源程序输入到计算机中,建立*.ASM文件。 2.汇编源程序 使用汇编程序将汇编源程序汇编成目标代码文件,即生成*.OBJ 文件。 目前使用较多的汇编程序是宏汇编程序MASM。 C>MASM A1↙ 3. 连接目标程序文件生成可执行文件 生成OBJ文件后,必须用LINK程序连接目标代码程序和库函数代码生成可执行文件,生成的文件的扩展名为EXE。 C>LINK A1↙ 4.程序的执行 建立了EXE文件后,就可以在DOS下直接执行程序了。 C>A1↙ 汇编程序调试工具debug命令: DEBUG调试命令介绍 1.主要调试命令: (1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理解,如图1.5所示。一般常用以下三种格式: a)-U↙:从当前IP处开始,对连续约32字节内容反汇编。如对TEST.EXE, 刚装入DEBUG时的IP=0000,则在输入U命令后有如下显示: -U↙ 13C2:0000 B402 MOV AH,02

13C2:0002 B241 MOV DL,41 13C2:0004 CD21 INT 21 13C2:0006 B44C MOV AH,4C 13C2:0008 CD21 INT 21 13C2:000A 8B4606 MOV AX,[BP+06] ……………… 13C2:0020 8B07 MOV AX,[BX] - 图1.5 反汇编命令的执行结果 在上例中,13C2:0000表示CS:IP的内容(其中CS的值是动态值);B402代表该处存放的二进制数据,亦即指令MOV AH,02H的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。 特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中13C2:000A单元以后的部分,显然不是TEST.EXE的内容。另外还需注意,DEBUG默认使用十六进制。 b)–U 0123↙:从指定的IP=0123处开始,对连续约32字节内容反汇编。 c)–U 0123 0143↙:从指定的IP=0123处开始反汇编,直至指定的0143处 结束。 (2)显示寄存器命令R:显示或修改寄存器的内容,如图1.6所示。一般常用以下形式: a)-R↙:显示所有寄存器当前的内容及当前将执行的指令。如对 TEST.EXE,在程序运行之前,键入R命令: -R↙ AX=0000 BX=0000 CX=000A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=13B2 ES=13B2 SS=13C2 CS=13C2 IP=0000 NV UP EI PL NZ NA PO NC 13C2:0000 B402 MOV AH,02

相关主题
文本预览
相关文档 最新文档