汇编语言源程序.ppt
《汇编语言源程序.ppt》由会员分享,可在线阅读,更多相关《汇编语言源程序.ppt(84页珍藏版)》请在三一办公上搜索。
1、1,5.4 汇编语言源程序,掌握:汇编语言与汇编程序的概念;汇编语言程序设计过程;汇编语言源程序的结构框架;常用伪指令及基本DOS功能模块的应用。,2,一、80X86新增指令特点:,增加对32位字长操作的指令;加强各类指令功能;增加了高级语言、控制保护、Cache 管理等指令。,3,二、汇编语言及汇编程序,计算机语言:,机器语言汇编语言高级语言,面向机器 的语言,机器语言,汇编语言,高级语言,4,汇编语言及汇编程序,汇编语言源程序 用助记符编写的程序,源程序的编译程序,汇编程序,汇编语言源程序,机器语言目标程序,5,汇编语言程序设计与执行过程,输入汇编语言源程序 源文件.ASM汇编(编译)目标
2、文件.OBJ链接 可执行文件.EXE调试 最终程序,6,汇编语言的程序结构,一个源程序必须用其编译器能够理解的语法进行编写,这些语法是指语句和程序结构必须遵循的规则。汇编语言也是如此。首先,通过以下可在PC DOS环境下运行的汇编语言源程序实例,初步认识标准的汇编语言源程序的框架结构,并通过它来了解汇编语言的有关规定和格式。,7,例:打印输出字符串“THIS IS A SAMPLE PROGRAM”,;SAMPLE PROGRAM DISPLAY MESSAGE;注释行STACK SEGMENT PARA STACK STACK;定义堆栈段 DB 1024 DUP(0);在存储器建立一个堆栈区
3、STACK ENDS;段结束DATA SEGMENT;定义数据段MESSAGE DBTHIS IS A SAMPLE PROGRAM;存放数据 DB 0DH,0AH,$DATA ENDS;段结束CODE SEGMENT;代码段开始 ASSUME CS:CODE,DS:DATA,SS:STACK;将段名与段寄器联系起来,8,START PROC FAR;将过程定义为远过程 PUSH DS MOV AX,0 PUSH AX MOV AX,DATA;建立数据段的可寻址性 MOV DS,AX;初始化DS LEA BX,MESSAGELOOP1:CMP BYTE PTRBX,$JE LOOP2 MOV
4、AH,5,标准序,以便返回DOS操作系统,9,MOV DL,BX INT 21H INC BX JMP LOOP1LOOP2:RETSTART ENDP;过程结束CODE ENDS;代码段结束 END START;整个程序汇编结束,10,汇编源程序的特点,一、由若干逻辑段组成,各逻辑段都有一个段名,由段定义语句(伪指令)来定义和说明。通常只有代码段是必不可少的。数据段或附加段用来在内存中建立一个适当容量的工作区用以存放常量和变量。堆栈段则在内存中建立一个堆栈区,以便中断和子程序调用及各模块间传递参数时使用。某些简单的程序并不一定需要数据段和堆栈段,但对一些复杂的程序,堆栈段、数据段和代码段都可
5、以不止一个。通常把数据段放在代码段前面。,11,汇编源程序的特点(续),二、在代码段的起始处,用ASSUME命令说明各个段寄存器与逻辑段的关系。并由用户自己设置各段寄存器(除代码段外)初值,以建立这些逻辑段的可寻址性。三、每个逻辑段由若干行汇编语句组成,每行只有一条语句且不能超过128个字符,但一条语句允许有后续行,最后均以加车作结束。整个源程序必须以END语句来结束,它通知汇编程序停止汇编。END后面的标号START表示该程序执行时的起始地址。,12,汇编源程序的特点(续),四、每一条汇编语句最多由4个字段组成,它们均按照一定的规则分别写在一条语句的4个区域,各区域之间用空格或TAB键隔开。
6、五、每个源程序在代码段中都必须含有返回到DOS操作系统的指令语句,以保证程序执行完毕后能自动回到DOS状态,以便继续向计算机键入命令。,13,源程序与PC DOS的接口,为保证用户程序执行完后自动返回DOS,应采取两项措施:一是将用程序中的主程序定义为FAR过程,其最后一条指令为RET;二是在主程序的开始处将PSP所在段的段地址DS(或ES)保存进栈,然后再将一个全0的字(PSP的段内偏移地址)压入堆栈。PUSH DSMOV AX,0PUSH AX,14,源程序与PC DOS的接口(续),还有一种返回DOS的非标准方法:不定义主程序为FAR过程并去掉标准序部分,只在代码段结束之前(即CODE
7、ENDS之前)增加两句:MOV AH,4CHINT 21H,15,汇编语言的语句格式,语句是汇编语言源程序的基本组成单位,源程序是一个语句序列。语句序列中的每个语句规定了一个基本操作要求,而语句序列则完成某个特定的操作任务。,16,语句的种类,在80X86/Pentium汇编语言中,有三种基本语句:指令语句、伪指令语句和宏指令语句。指令语句:对应于CPU指令系统中的一条指令,为可执行语句。汇编程序将为之产生一对应的机器目标代码。如:指令语句MOV DS,AX;机器代码为8EH和D8H,17,语句的种类(续),伪指令语句CPU不执行的语句,只是汇编时给汇编程序提供汇编信息,如定义符号、分配存储单
8、元、将程序分段等。它本身不产生目标代码,所以是指示性语句。如伪指令语句SEGMENT/ENDS;,18,语句的种类(续),宏指令语句是以某个宏名字定义的一段指令序列。汇编时,凡有宏指令语句的地方都将用相应的指令序列的目标代码插入。,19,汇编语言的语句格式,指令性语句 由CPU执行的指令语句格式:标号:前缀 助记符 操作数,操作数;注释,指令的符号地址,标号后要有冒号,操作码,注释前加分号,20,汇编语言的语句格式,指示性语句:CPU不执行的指令,不生成目标代码;由汇编程序执行,用于分配内存空间、定义变量、指示程序开始和结束等。指令格式:,名字 伪指令助记符 操作数,操作数,;注释,变量的符号
9、地址其后不加冒号,指示性语句中至少有一个操作数,21,汇编语言的语句格式(续),其中,方括号中的内容为可选部分,操作数部分或是0、1操作数,或是由逗号隔开的多个操作数。(1)标号和名字:标号和名字分别是给指令单元和伪指令起的符号名称,用符号汇编语言规定的标识符来表示。标号后面必须有冒号,名字后面没有。标号和名字的选择有一些限制。首先,它们必须符号汇编语言的标识符定义,即以字母开头,由字母(AZ或az,汇编程序不区分大小写)、数字及部分特殊字符(?、$和下划线_等)组成的字符串表示,字符串长度不能超过31个。此外,标识符不能是汇编言中有特定意义的保留字。,22,汇编语言的语句格式(续),(2)助
10、记符和定义符助记符和定义符分别用于规定指令语句的操作性质和伪指令语句的伪操作功能,这部分是语句中唯一不可缺省的。(3)操作数指令语句中的操作数提供该指令的操作对象,并说明要处理的数据存放在什么位置以及如何访问它。(4)注释注释由分号“;”开始,用来对语句的功能加以说明,它们构成了源程序的编程文档,使程序更容易被理解和阅读。,23,操作数,常量 数值或字符、字符串寄存器存储器单元变量或标号表达式 可包括各种运算符,24,常量,在汇编时已经确定其值且程序运行期间不变化的量为常量,如语句中的立即数或端口地址等。这些常量的形式各不相同,常用的有二、十、八或十六进制的整型数值常量、字符串常量和已赋值的常
11、标识符。在汇编语言源程序中,常用十六进制来表示数据和地址。,25,变量,代表内存中的数据区,程序中视为存储器操作数变量的三种属性:段 值 变量所在段的段地址 偏移量 变量单元地址与段首地址之 间的位移量。类 型 字节型(BYTE)、字型(WORD)、双字型(DWORD)、四字和十字节5种,26,表达式操作数,表达式操作数由各种操作数、运算符和操作符组成。汇编语言中的两类表达式:数值表达式:由数值常量、字符串常量或符号常量等与算术、逻辑或关系运算符连接而成。地址表达式:由常量、变量、标号、寄存器的内容以及一些运算符组成。其值表示存储器地址,一般都是段内的偏移地址。地址表达式主要用来表示指令语句中
12、的操作数。,27,三、基本伪指令,数据定义伪指令符号定义伪指令段定义伪指令设定段寄存器伪指令结束伪指令*过程定义伪指令*宏命令伪指令,28,数据定义伪指令,数据定义语句用于定义变量。它指定变量的类型和名称,并为变量分配存储单元。格式:变量名 伪指令助记符 操作数,;注释其中,变量名是可选的;操作数是赋给变量的初值,多个相同类型的变量可在一条语句中定义。经过定义的变量名有三个属性:数据类型、偏移量(可用OFFSET获得)和段基址(可用SEG获得)。若某个变量所表示的是一个数组,则其类型属性为变量的单个元素所占用的字节数。,29,数据定义伪指令,伪指令助记符DB 定义的变量为字节型DW 定义的变量
13、为字类型(双字节)DD 定义的变量为双字型(4字节)DQ 定义的变量为4字型(8字节)DT 定义的变量为10字节型,30,数据定义伪指令,DATA1 DB 11H,22H,33H,44HDATA2 DW 11H,22H,3344HDATA3 DD 11H*2,22H,33445566H,考虑以上变量在内存中的存放形式,31,数据定义伪指令,伪指令的性质决定所定义变量的属性;定义字符串必须用DB伪指令例:DATA1 DB ABCD,66H,A,B,C,D,41H,42H,43H,44H,66H,32,数据定义语句的具体形式和功能,(1)为数据项分配存储单元,用变量名作为该存储单元的名称。例:X
14、DB 25H;定义变量X为字节 Y DW 4124H;定义变量Y为字汇编时汇编程序会把25H、4142H这些初值分别放入名为X、Y的存储单元中,33,数据定义语句的具体形式和功能,(2)预留若干字节(字、双字)存储单元但并不赋以具体的初值,以存放程序的运行结果。这时操作数部分可使用问号“?”。例:A DB?;为变量A分配一个字节单元 B DB?;为变量B分配一个字单元,34,数据定义语句的具体形式和功能,(3)引入若干个用逗号分隔的操作数来定义一个表(数组)。例:W_TABLE DW 1122H,3344H;定义一个字表 B_TABLE DB 1,2,4,8,16;定义一个字节表其中字变量W_
15、TABLE的内容为1122H,下一个字单元的内容为3344H。,35,数据定义语句的具体形式和功能,(4)用DB伪指令在内存中定义一个字符串。字符串中的每一个字符用它的ASCII码值来表示,为一个字节,所以字符串的定义必须用DB命令。例如:MESSAGE DB HELLO注意:当字符串的长度不超过两个字符时,也可用DW伪指令来定义。例:STRING1 DB AB STRING1 DW AB STRING1 DW AB,CD,36,重复操作符,为一个数据区的各单元设置相同的初值格式:变量名 伪指令助记符 n DUP(初值,)例:BW 20 DUP(0)DB 3 DUP(22H,11H,?),随机
16、数,37,分析操作符与合成操作符,作为存储器操作数的标号或变量都有段、偏移量和类型三种属性。在程序设计中,有时需要随时查询、调用或修改这些属性,以满足不同的访问要求,这些操作由分析和合成操作符来完成。,38,分析操作符,分析操作符作用于存储器操作数时返回它们的属性值。这些操作符是:SEG、OFFSET、TYPE、SIZE、LENGTH等。分析操作符的使用格式:操作符 标号或变量SEG和OFFSET操作符SEG和OFFSET分别用以返回标号或变量的段地址和偏移地址。,39,分析操作符,TYPE、LENGTH、SIZE操作符TYPE操作符返回一个数字值,表示存储器操作数的类型。LENGTH操作符返
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 源程序
链接地址:https://www.31ppt.com/p-6423501.html