2022年2022年汇编语言与计算机原理 .pdf

上传人:Che****ry 文档编号:34872899 上传时间:2022-08-19 格式:PDF 页数:15 大小:192.82KB
返回 下载 相关 举报
2022年2022年汇编语言与计算机原理 .pdf_第1页
第1页 / 共15页
2022年2022年汇编语言与计算机原理 .pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《2022年2022年汇编语言与计算机原理 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言与计算机原理 .pdf(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第五章汇编语言程序基础5.1 概述计算机程序设计语言可以分为三个层次:机器语言、汇编语言和高级语言。1机器语言在机器语言中,用二进制编码表示指令和数据。使用机器语言编写的程序称为机器语言程序。计算机能够直接理解和执行机器语言程序。机器语言程序具有占用内存空间少,执行速度快的优点。但是,使用机器语言编写程序非常繁琐,阅读和修改程序也十分困难,并且不同类型的计算机,其机器语言也不相同。现在,除非特殊需要,人们基本不再使用在机器语言设计程序。2汇编语言汇编语言程序使用机器指令的助记符号书写指令,地址和数据也使用符号表示。与机器语言程序相比,汇编语言程序编写、阅读和修改程序要方便许多,又有占用内存空间

2、少,执行速度快的优点。但是,汇编语言程序要“翻译”成机器语言程序计算机才能执行。将汇编语言程序翻译成机器语言程序过程称为汇编(Assemble ) 。可以使用计算机软件自动完成汇编工作,这种软件称为汇编程序。使用汇编语言程序编写的程序称为汇编语言源程序,一般以文件形式存储在磁盘上,称为源程序文件,约定扩展文件名为“ .ASM” 。汇编语言源程序经过汇编后所得到的程序称为目的程序,目的程序一般也以文件形式存储在磁盘上,其约定文件扩展名为“ .OBJ ” 。目的程序还需要链接处理,才能形成计算机可直接执行的机器语言程序 (文件扩展名一般为“.EXE” ) 。链接处理由链接程序完成,链接程序可以将一

3、个或多个目标程序链接为一个可执行程序。尽管使用汇编语言编写程序比使用机器语言要容易得多,但是仍然繁琐,并且,同使用机器语言一样,使用汇编语言编写程序同样要了解计算机的内部硬件结构,设计问题的求解步骤仍然需要结合和计算机的内部硬件结构。因此,机器语言和汇编语言被称为面向机器的语言。设计好的程序只能在特定类型的计算机上运行,难以移植到其它类型计算机上。3高级语言高级语言是类似于英语的计算机语言,实际上它是将英语的一些单词给与确切的操作含义限制,作为计算机的操作指令。使用高级语言设计程序,不需要了解计算机的内部硬件结构,只需要考虑问题的求解步骤即可,因此,高级语言又被称为面向过程的程序设计语言。目前

4、使用的高级语言有几百种,常用的高级语言有 C、C+、JA VA、FORTRAN、COBOL 等高级语言编写的程序称为高级语言源程序,一般以文件形式存储在磁盘上。不同高级语言的源程序使用的约定文件扩展名不同,例如,C 语言源程序文件扩展名的约定为“.C” ;FORTRAN 语言源程序文件扩展名的约定为“.FOR”等。计算机不能直接执行高级语言编写源程序,必须“翻译”成机器语言程序计算机才能执行。将高级语言程序“翻译” 成机器语言程序的系统软件称为解释程序或编译程序。根据翻译方式不同,可以将高级语言分为解释型和编译型。解释型高级语言程序,执行时才进行翻译,并且翻译一句,执行一句,这样边解释边执行,

5、直到程序执行结束。解释型高级语言不保存翻译结果,也就是说不产生目的程序文件。解释型高级语言程序每次执行都要重新翻译,因此执行速度较慢。但是由于解释性高级语名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 言程序是翻译一句执行一句,因此容易发现程序中的错误指令,便于调试程序。编译型高级语言程序是将源程序一次编译为目的程序,并且以文件扩展名“ .OBJ”存储在磁盘上。和汇编语言类似,高级语言程序编译产生的目的程序也需要经过链接处理,

6、才能形成计算机可直接执行的机器语言程序 (文件扩展名一般为“.EXE” ) 。 编译型高级语言程序是一次翻译,程序执行只要执行可执行程序文件即可,不需要再翻译,因此程序执行效率高。另外,作为提供给用户的应用程序,可以只提供给用户可执行程序文件,这样用户就很难对程序自行修改,提高了程序的安全性。作为商品软件,一般软件公司还可以通过对源程序保密,来保护自己的知识产权。本章讨论汇编语言程序设计的基本概念和方法。5.2 算法和程序基本结构一、 算法解决和处理问题的步骤称为算法,使用计算机处理某问题的步骤称为计算机算法,这里简称为算法。将算法用计算机语言表述,就是计算机程序。为了能够直观、清楚的描述算法

7、,分析算法是否正确,以及算法的优劣,常常使用图形工具表示算法,其中流程图是使用最早最广泛的一种。流程图使用一些图形符号表示各种不同操作,图 5.2.1给出的是几个常用的基本流程图符号。矩形框:表示内部操作输入输出框:表示输入输出操作菱形框:表示判断选择操作流线:表示操作方向图 5.2.1 流程图使用的基本符号实践证明,流程图在程序设计中是十分有用的工具,可以帮助我们分析问题,确定问题的正确算法。流程图还可以帮助我们阅读和理解其他人设计的程序算法。图 5.2.2是计算 S=1+2+ +100算法的流程图。该算法是针对使用汇编语言程序设计的,因此涉及了 CPU的内部寄存器。算法将 AX 寄存器作为

8、存放结果的寄存器,并将其初始值置为 0;BX 寄存器初始值置为 1,重复计算 AX+BX ,并且将计算结果存入 AX 寄存器,每执行一次加法运算后 BX 寄存器增 1;CX 寄存器作为计数器,其初始值设置为计算重复次数 100 ,每执行一次运算,CX 减 1,直到 CX 等于 0,计算结束。为了使流程图简洁、清楚的描述算法,有时有必要忽略一些显而易见的细节,有时一些步骤可能端框:表示开始和结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - -

9、 - - - 还需要进一步详细描述,例如,图中输出 AX 寄存器这一步骤就需要进一步给出详细算法,但是为了突出重点,这里就没有给出详细的具体步骤,其详细步骤可以在“子图”中给出。图 5.2.2 流程图示例二、程序基本结构经过长期的实践人们认识到为了提高程序设计效率,使程序容易调试和维护,程序应当有良好的结构,结构化程序设计方法就是基于这种认识提出的。结构化程序设计方法认为:任何程序都可以由三种基本结构组合而成:顺序结构、判断选择结构和循环结构。1顺序结构顺序结构由一组按照先后顺序执行指令的构成,其流程图描述如图 5.2.3 。2判断选择结构判断选择结构由一个判断指令和两个程序块构成,当判断条件

10、成立时执行其中一个程序块,当判断条件不成立时执行另一个程序块,其流程图描述如图 5.2.4 (a) 。 判断选择结构有两种变形,如图 5.2.4(b)和图 5.2.4 (c) 。开始0AX 1BX 100 CX CX=0? AX+BX AX BX+1BX CX-1CX N 输出 AX 值结束Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 3 循环结构循环结构由一个条件判断指令和循环体组成,循环体包含一条或若干条指令。循环结

11、构根据条件判断的结果执行或者不执行循环体。 循环结构有两种形式: 当型循环 (图 5.2.5 ) 和直到型循环 (图 5.2.6 ) 。当型循环是判断条件是否成立,如果成立则执行循环体,否则执行循环结构下面指令;直到型循环执行循环体直到条件不成立。当型循环和直到型循环的区别是:前者先判断条件是否成立,后执行循环体,如果开始条件就不成立则跳过循环体;后者先执行循环体,执行后再判断条件是否成立,因此,至少执行循环体一次。条件图 5.2.4 (b) 判断选择结构程序块程序块一条件程序块一条件程序块一Y N 图 5.2.5 当性循环图 5.2.6 直到性循环条件程序块图 5.2.4 (c) 判断选择结

12、构程序块三图 5.2.3 顺序结构条件程序块二图 5.2.4 (a) 判断选择结构程序块一程序块二Y N Y N/Y Y/N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 5.3 汇编语言程序本节给出计算 S=1+2+100的汇编语言示例程序,说明汇编语言程序的基本结构和主要成分。一、汇编语言程序示例.MODEL SMALL .DATA X DW ? .CODE GO: MOV AX, DATA MOV DS, AX MOV

13、 AX, 0 MOV BX, 1 MOV CX, 100 LP: ADD AX, BX INC BX LOOP LP MOV X, AX END GO 程序说明:1MODEL 存储模式说明伪指令, 所谓伪指令就是非执行指令,主要用于为汇编程序提供相关汇编信息,或者设置程序执行所需要的一些参数。存储模式说明的目的是给操作系统提供程序执行时所需要的内存空间分配信息。存储模式有 HUGE、LARGE、MEDIA 、SMALL 等。SMALL 模式的程序机器代码不大于 64K 存储空间。2汇编语言程序由若干逻辑段组成,简单程序可以只有一个段。一般程序都有一个数据段和一个代码段,如上面程序 DATA 段

14、位数据段,CODE段为代码段。DATA 和 CODE分别是数据段和代码段的约定段名。段名前要用“”标识。数据段一般用于定义程序将处理的数据,代码段一般由程序指令组成。3数据段的数据定义应当说明数据明、数据操作类型、存储空间分配和数据的初值。数据名是用户给出的合法的名字,数据名是若干连续存储单元的首单元在段内的偏移地址符号。数据操作类型用如下伪指令定义:DB 字节DW 字DD 双字数据存储空间分配和赋初值同时定义。指定一个初值就按数据的操作类型分配相应的存储空间,并且将指定的值存储到该存储空间。如果不指定初值,可以使用“?”号为数据分配存储空间。一个“?”号表示按操作类型分配一个存储单位。例如:

15、buff dw ?, ? 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 表示数据 buff的操作类型为字类型,占用两个字(4各字节)的存储空间,没有初值。4 程序结束命令是:END 标号标号是程序执行的入口偏移地址,即当程序装入内存执行时,由那一条指令开始执行。该偏移地址值由操作系统程序装入 CPU 的指令指针寄存器 IP。5示例程序代码段开始的两条指令MOV AX, DATA MOV DS, AX 符号“”是取基址运算符号

16、,第一条指令是计算数据段的段基址,然后将其保存到 AX 寄存器。第二条指令是将 AX 寄存器保存的段基址传送给数据段基址寄存器 DS。程序开始将数据段的段基址装入 DS段寄存器是必须做的。操作系统装入应用程序只能自动初始化代码段寄存器 CS,其它段寄存器应当由用户程序初始化。因为程序中指令只涉及到数据的段内偏移地址,所以要将其段基址先存入DS 段寄存器,以便程序执行时能够正确计算数据存放的物理地址。至于数据段基址和代码段基址的具体值,程序装入内存时由操作系统分配。上面程序是一个不完整的程序,,一是没有输出结果,二是没有结束程序指令。对于程序设计人员编写输入输出程序是一件非常烦琐的工作,并且要十

17、分清楚的了解计算机的硬件工作原理。一般来说,不同程序的输入输出操作部分是十分相似的,因此人们想到,可以将输入输出操作设计成通用程序模块,需要时只要调用相应模块即可。计算机的通用输入输出程序模可分为两个层次:一是计算机厂商固化在只读存储器中的基本输入输出模块( BIOS) ,其二是包含在计算机操作系统中的输入输出功能模块。BIOS 的输入输出模块和计算机硬件联系较紧密,不同厂家制造的计算机 BIOS 也有所不同。调用 BIOS 模块称为低级调用,一般调用低级输入输出模块的程序的兼容性要差。调用操作系统的输入输出功能模块和硬件关联较少,程序的兼容性好。在 DOS操作系统下,可以调用 DOS系统提供

18、的软中断服务程序;在 WINDOWS 操作系统下,可以调用 API 函数。二、汇编语言程序上机过程1编辑源程序可以通过 DOS系统的 EDIT.COM,或 WINDOWS 的笔记本程序输入、编辑源程序。注意源程序文件的扩展名约定为“.ASM” 。2将源程序汇编为.OBJ文件,命令格式为:MASM 源程序文件名;这里分号的作用是忽略系统的提示输入,如果不输入分号,系统将提示输入 OBJ文件名等信息;汇编程序将检查源程序的语法错误,如果没有语法错误产生OBL 文件;如果有语法错误将给出错误提示,这时应使用编辑软件重新编辑,修改错误。3将汇编产生的 OBL 文件连结为可执行程序文件,命令格式为:LI

19、NK 文件名;这里的分号的作用与汇编命令含义相同。注意命令中可省略扩展名,如果输入扩展名应当是“OBJ” , 不要输入源程序的扩展名“ASM” 。 LIN K 命令产生 EXE 文件,或使用特殊技巧可产生 COM文件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 三、汇编语言的伪指令汇编语言程序中一些指令在汇编时产生一个机器指令相对应的目标代码,另外一些指令没有相对应的机器指令,这些指令仅仅为汇编程序提供汇编过程中必要的信息

20、。这些指令称为伪指令。1段定义伪指令汇编语言程序由若干逻辑段构成,每个段有一段名,段名由字母、数字和下划线组成,但首字符必须是字母或下划线,其一般格式为:段名 1 SEGMENT 段名 1 ENDS 段名 2 SEGMENT 段名 2 ENDS 段名 n SEGMENT 段名 n ENDS END 标号示例程序是简略格式,使用简略格式在输入源程序时可以减少许多繁琐工作,在以后章节的示例程序都将以简略格式给出。 简单的汇编程序只有一个代码段,或者一个代码段和一个数据段,较复杂的程序可能包含若干数据段和若干代码段。2,程序结束伪指令每一个汇编语言程序必须以“END”结束,后面要给出标号或过程名,该

21、标号或过程名应当是程序中定义过的,代表程序执行的入口地址。3存储模式定义为伪指令:MODEL 是存储模式定义为伪指令,链接程序在对目标程序链接时,根据此项定义确定程序执行时装入内存的模式。存储模式定义如下:。TINY 代码与数据在同一段中。SMALL 数据段在 64K 内,代码段在 64K 内。MEDIUM 数据段在 64K 内,代码段可以大于 64K。COMPACT 代码段在 64K 内,数据段可以大于 64K。LARGE 代码段和数据段均可以大于 64K,但是数组不大于 64K。HUGE 代码段、数据段和数组都可以大于 64K 4数据定义伪指令数据定义格式为:变量名 DB | DW | D

22、D 表达式表其中:DB 表示数据类型是字节(位)类型;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - DW 表示数据类型是字(16位)类型;DD 表示数据类型是双字字(32位)类型。变量名实际是内存偏移地址的符号表示,该地址就是数据存储的开始地址。变量通过表达式列表为其分配存储空间和预置初值,例如:X1 DB 0F2H, 32H ;变量 X1 分配两个字节,并赋初值 0F2H, 32H A DW 0F9AH, 0A4B6H ;

23、变量 A 分配两个字,并赋初值 0F9AH, 0A4B6H B DB 100,2*3 ;变量 B 分配两个字节,并赋初值 100, 6 Y DB ABCD ;变量 Y 分配四个字节,并赋初值 41H, 42H, 43H, 44H SS DW AB, CD ;变量 SS分配两个字,并赋初值 4241H , 4443H 如果存储单元初值不确定,可以用“?”代替,例如:RESUL DB ?, ?, ? ; 变量 RESUL T 分配个字节,没有赋初值。使用 DUP重复子句可以给多个连续存储单元赋同一值,例如,ARRY DB 100 DUP(0) ;变量 ARRY 分配 100个子节,每个字节赋初值

24、0 L DB 2DUP ( A ,2DUP( B ) ;变量 L分配个字节,赋初值 A , B , B , A , B , B 5常量定义变量初值,以及表示立即操作数都需要使用常量。在汇编语言中常量有五种形式:十六进制数(以字母H结束当首位数字为字母时,前面要加 0)二进制数(以字母B结束) ;十进制数(隐含) ;八进制数(以字母Q结束) 。下面指令实际赋值结果是相同的:MOV DL, A MOV DL, 41H MOV DL, 0100 0001B MOV DL, 65 第一条指令是将字符 A 的 ASCII 码传送到 DL 寄存器,后面三条指令的源操作数分别是字符 A的 ASCII 码的

25、16进制、二进制和十进制表示形式,所以四条指令执行结果是相同的。6表达式和运算符包括:表达式经常用于表示地址值,立即数的值,或变量的初始值等。在汇编语言中凡是可以使用常量的地方都可以使用表达式。表达式是由运算符号、常量、变量以及圆括号组成的,有一定运算意义的式子,例如:MOV DL, 65+32 表达式中使用的基本运算符号包括:算术运算符号:(加号) ,(减号) ,(乘号) ,/(除号) ;关系运算符:GT(大于) ,GE(大于等于) ,LT(小于) ,LE(小于等于) ,EQ(等于) ,NE(不等) 。例如:X DB 3 GT 2 ,当关系成立时 X 赋值全 1,即 x=0FFH;当关系不成

26、立时赋值全 0 ,即 x=00H。逻辑运算符:NOT(逻辑非) ,AND (逻辑于) ,OR(逻辑或) ,XOR(逻辑异或)在汇编语言中,逻辑运算符表示的是位运算,例如指令MOV AL, 3 AND 0FH,执行的操作名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 是将字符3的 ASCII 码和 0FH按二进制数的每一位进行“与”运算,结果存到 AL 寄存器。如下图:0011 0011B ;字符3的 ASCII 码 0000

27、1111B ;0FH 对应的二进制数0000 0011B 7标号标号是地址符号,用于表示指令地址或数据地址。表示指令偏移地址的标号一般置于指令之前,标号后由一冒号。指令标号可以作为转移指令和循环指令的目的操作数。5.4 DOS 功能函数调用计算机硬件是程序运行的平台,对于应用程序只有硬件平台是不够的,还必须有软件平台,这就是操作系统程序。在 DOS操作系统下,汇编语言程序可以直接调用 DOS操作系统的功能函数,完成程序的输入和输出操作。一、DOS功能函数调用DOS 操作系统提供了执行基本输入输出等功能的函数,计算机启动时DOS 功能函数随着 DOS核心文件一起装入内存,并且常驻内存的某一固定空

28、间。DOS操作系统的每一个功能函数有一对应编号,称为功能号。在汇编语言中,调用的功能函数的方法是:1设置调用函数的入口参数;2将代表函数的功能号赋给 AH 寄存器;3发出“INT 21H” 调用 DOS 功能函数指令。INT 27H INT 33H 执行“INT 21H” 指令时,计算机系统根据 AH 寄存器中的功能号找到相应功能函数的入口地址,转移执行功能函数程序,执行结束后,返回调用程序继续执行“INT 21H”后面指令,并且将调用结果(功能函数的出口参数)带回调用程序。二、字符输入输出函数调用DOS功能函数有上百个,使用时可查阅相关技术手册了解函数的入口参数,功能号和调用后的返回值。为了

29、下面示例程序需要,这里介绍几个常用的 DOS功能函数:1 字符输入函数功能号:01H 入口参数:无功能:接受键盘输入的一个字符返回值:输入字符的 ASCII 码在 AL 寄存器。例:MOV AH, 01H INT 21H 执行上面 01 功能调用时,计算机等待键盘输入,当键盘某键按下时,将对应键的 ASCII 码存入AL 寄存器,结束调用。所以,该功能函数调用后,可以通过检查 AL 寄存器的值,识别输入的字符。2字符串输入函数功能号:0AH 入口参数:DS:DX 指向输入缓冲区地址,缓冲区的结构如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -

30、- - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 字节 0: 缓冲区能容纳的字节数字节 1: 所读字节数字节 2开始: 实际输入的字符。功能:带缓冲区的键盘输入,将键盘输入的字符串存入 DS:DX 指向的输入缓冲区返回值:无例: .DATA BUFF DB 80H, ?, 80H DUP(?) .CODE START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET BUFF MOV AH, 0AH INT 21H 0A 功能函数是带缓冲区的键盘输入函数,使用该功能可以输入一个字符串,当输入

31、回车键时,输入结束。该调用将输入的实际字符数存入缓冲区的第二个字节(不包括回车键) ,将输入字符的 ASCII码按照输入的顺序从第三个字节开始存储。缓冲区是程序设计者定义的数据变量,调用0A 功能前要将该变量的段基址置入 DS 段寄存器,将变量的偏移地址置入 DX 寄存器,并且要将变量分配的字节数置入变量的第一个字节。输入的字符数不可以超过变量可容纳的字节数。3字符输出函数功能号:02H 入口参数:输出字符的 ASCII 码存入 DL 寄存器。功能:将 DL 寄存器中的字符输出到标准输出设备(一般为显示器)。返回值:无例如,输出字符“8” ,可使用如下指令:MOV DL, 38H MOV AH

32、, 02H INT 21H 4字符串输出函数功能号:09H 入口参数:DS:DX指向输出缓冲区地址,输出字符串必须以“ $”结束功能:输出字符串返回值:无例如,下面程序段输出数据段定义的字符串 “GOOD MORNING .” ,调用 09H功能输出该字符串: .DATA BUFF DB, GOOD MORNING .$ .CODE START: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - MOV AX, DATA MO

33、V DS, AX MOV DX, OFFSET BUFF MOV AH, 09H INT 21H 5结束程序函数功能号:4CH 入口参数:无功能:结束程序返回值:略执行程序由操作系统装入内存执行,程序执行完应返回操作系统。为了能够正常返回操作系统,可以调用 DOS的 4CH 功能函数。三、应用举例:下面用几个简单的程序说明上面所介绍的 DOS 功能函数的应用。例 1:从键盘输入字符串,存入内存变量,如果输入回车键,表示输入结束。算法分析:键盘输入可以调用 DOS的 01H功能,一个字符一个字符的输入,每输入一个字符,判断是否为回车键(ASCII 码 0DH) ,如果是回车键,输入结束。也可以调

34、用 0AH 字符串输入功能。下面分别给出这两种方法的程序示例。1 调用字符输入 01H功能的字符串输入程序:.MODEL SMALL .DATA X DB 128 DUP ($) .CODE START: MOV AX, DATA MOV DS, AX ;段寄存器初始化 MOV SI, 0 INPUT: MOV AH, 01H INT 21H ;调用 dos字符输入函数 CMP AL, 0DH; ; (AL)- 0DH,输入是回车键吗? JE EXIT ;结果为 0是回车键,转移到 EXIT MOV XSI, AL ;AL中的 ASCII码存入地址为 DS*10H+(SI)+(X)内存单元 I

35、NC SI JMP INPUT ;无条件转移到 INPUT标号,输入下一数字 EXIT: MOV AH, 4CH INT 21H ;调用 4C功能函数,结束程序 END START 2 调用字符串输入 0AH 功能的字符串输入程序:.MODEL SMALL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - .DATA BUFF DB 128, ?, 128 DUP($) .CODE START: MOV AX, DATA MO

36、V DS, AX MOV DX, OFFSET BUFF INPUT: MOV AH, 0AH INT 21H EXIT: MOV AH, 4CH INT 21H END START 程序说明:1变量 BUFF定义为字节类型,第一个字节赋值 128 ,表示键盘输入缓冲区可容纳字节数为 128个字节;第二字节没有赋值,由 0AH 功能函数赋值,在调用 0AH 功能后该字节的值是实际输入的字符数(不包括会车字符) ;由第三字节开始,共 128个字节存放输入的字符串,这 128个字节赋值字符“$” ,是为了调用 09H 功能数出字符串(参阅例 3) 。2OFFSET是取变量偏移地址运算符。0AH 功

37、能调用要求DS:DX指向键盘输入缓冲区,所以应将 BUFF的偏移地址存入 DX 寄存器。例 3:调用 09H功能输出字符串。下面程序调用 0AH 功能输入字符串,然后再调用 09H功能将字符串输出:.MODEL SMALL .DATA BUFF DB 128, ?, 128 DUP($) .CODE START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET BUFF INPUT: MOV AH, 0AH INT 21H OUTPUT: MOV DL, 0DH MOV AH, 02H INT 21H MOV DL, 0AH MOV AH, 02H INT 21H

38、 MOV DX, OFFSET BUFF+2 MOV AH, 09H INT 21H EXIT: MOV AH, 4CH INT 21H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - END START 程序说明:1标号 OUTPUT 开始的 6条指令调用 02H功能输出 0DH 和 0AH,0DH 是回车的 ASCII 码,输出 0DH 使光标回到当前行的开始位置,0AH 是换行控制 ASCII 码,使光标换到下一行。2

39、指令“MOV DX, OFFSET BUFF+2 ”是将 BUFF加 2,在取偏移地址,因为实际输入的字符从 BUFF的第 3字节开始。5.5 程序调试工具软件 DEBUG DEBUG 是 DOS操作系统提供的工具软件,常用于程序调试。本届介绍 DEBUG在汇编语言程序调试中的使用。一、DEBUG 命令在 DOS提示符下输入 DEBUG,回车后进入 DEBUG。DEBUG 的提示符为“-” ,在该提示符下即可输入 DEBUG 命令。在 DEBUG 中所用数均为 16 进制数,不用加“H”后缀。下面介绍 DEBUG常用命令:1 汇编命令 A 格式:A 段基址 :偏移地址 功能:输入汇编指令。示例

40、:- A -0BDD:0100 MOV AL, 3 -0BDD:0102 ADD AL,3 -0BDD:0104 当显示下一地址时,直接回车即结束输入。2 执行命令 G 格式:G= 开始地址, 结束地址 功能:从开始地址执行指令,执行到结束地址。示例:- G =0100 ,0104 3 单步执行命令 T 格式:T= 开始地址 功能:执行当前地址指令,执行后停止,并且显示个寄存器值和下一条指令。示例:- T=0100 AX=0003 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0BDD ES=0BDD SS=0BDD CS

41、=0BDD IP=0102 NV UP EI PL NZ NA PO NC -0BDD:0102 0405 ADD AL, 3 4显示内存命令 D 格式:D= 开始地址 ,结束地址 功能:显示指定地址范围的内存值,显示是以 16 进制数形式和字符两种形式显示,如果是非打印字符,则以“。 ”代替。如果不指定结束地址,则显示一页。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 15 页 - - - - - - - - - 反汇编命令格式:= 开始地址 ,结束地址 功能:将指

42、定地址范围内的机器代码反汇编为指令助记符。示例:=0100 0C2E:0000 B82F0C MOV AX, 0C2F 0C2E:0003 8ED8 MOV DS, AX 0C2E:0005 BE000 MOV SI, 0000 0C2E:0008 B401 MOV AH, 01 0C2E:000A CD21 INT 21 6读盘命令 L 格式:L 地址 盘号 起始扇区 扇区数 N 功能:将指定盘号,从指定扇区读 N 个扇区数据,从指定地址装入内存。如果省略地址,则隐含地址为 CS:0100 ;盘号 0表示 A 盘,1表示 B 盘。7命名待读文件命令 N 格式: N 文件名功能:指定待装入文件

43、名示例:-N EX542.EXE -L 将当前盘上的 EX542.EXE文件装入 CS:0100开始的内存单元。8结束命令 Q 格式: -Q- 功能:结束 DEBUG,返回 DOS。二、DEBUG 在汇编中的应用1 在 DEBUG 中使用 A 命令输入汇编程序,并且使用 G,或 T 命令执行。例如,输入下面程序段,并单步执行的过程如下:DEBUG -A-0BDD:0100 MOV DL, 04-0BDD:0102 OR DL, 30-0BDD:0104 MOV AH, 02-0BDD:0106 INT 21- 0BDD:0106 -T=0100AX=0000 BX=0000 CX=0000 D

44、X=0004 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0BDD ES=0BDD SS=0BDD CS=0BDD IP=0102 NV UP EI PL NZ NA PO NC -0BDD:0102 0405 OR DL, 30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - -T AX=0000 BX=0000 CX=0000 DX=0034 SP=FFEE BP=0000 SI=0000 DI

45、=0000 DS=0BDD ES=0BDD SS=0BDD CS=0BDD IP=0102 NV UP EI PL NZ NA PO NC -0BDD:0104 80CA30-T MOV AH, 02 -TAX=0200 BX=0000 CX=0000 DX=0034 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0BDD ES=0BDD SS=0BDD CS=0BDD IP=0102 NV UP EI PL NZ NA PO NC -0BDD:0106 CD21 INT 21 -G=0106, 0108 2调试.EXE文件编写程序难免出现错误,有些错误通过分析源程序代

46、码可以找到原因,有些错误非常隐蔽,分析源程序代码很难找到原因, 这时可以使用 DEBUG 跟踪程序执行,从而找出程序错误所在。下面操作是使用 DEBUG 调试 EX542.EXE文件的操作。DEBUG EX542.EXE -U启动 DEBUG 同时装入程序 EX542.EXE,然后使用 U 命令反汇编,这时可以看到反汇编后的汇编语言程序。程序装入 DEBUG 后可以用 G 命令分段执行,或者使用 T 命令一条一条的单步执行,执行时注意观察寄存器的变化,直到找到出错原因为止。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com