3汇编语言程序设计-黑白版

上传人:小** 文档编号:44886393 上传时间:2018-06-14 格式:PPT 页数:145 大小:2.02MB
返回 下载 相关 举报
3汇编语言程序设计-黑白版_第1页
第1页 / 共145页
3汇编语言程序设计-黑白版_第2页
第2页 / 共145页
3汇编语言程序设计-黑白版_第3页
第3页 / 共145页
3汇编语言程序设计-黑白版_第4页
第4页 / 共145页
3汇编语言程序设计-黑白版_第5页
第5页 / 共145页
点击查看更多>>
资源描述

《3汇编语言程序设计-黑白版》由会员分享,可在线阅读,更多相关《3汇编语言程序设计-黑白版(145页珍藏版)》请在金锄头文库上搜索。

1、3.1 汇编语言概述3.2 汇编语言程序结构与语句格式3.3 伪指令语句3.4 汇编语言程序设计基础3.5 模块化程序设计技术第三章第三章 汇编语言程序设计入门汇编语言程序设计入门23.1 汇编语言概述特点: 一种介于机器语言和高级语言之间的计算机编程语言;用助记符代替机器语言指令的二进制代码。用途:主要用于一些对内存容量和速度要求比较高的编程场合,如 :系统软件、实时控制软件、I/O接口驱动程序等。程序生成的目的代码精简,占用内存少,执行速度快。优点:程序与所要解决的问题的数学模型之间的关系不直观 ,编程难度大,容易出错,程序设计和调试的时间较 长;并且程序在不同机器间的可移植性较差。缺点:

2、3.2 汇编语言程序结构与语句格式q 源程序结构q 语句格式DATA SEGMENTBLOCK DB 12H,23H,87H,98H,55HPLUS_DATA DB 5 DUP (?)MINUS_DATA DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS DATAMOV BX,OFFSET MINUS DATAMOV CX,5 GOON: LODSB TEST AL,80H JNZ MINUS STOSB J

3、MP AGAINMINUS:XCHG BX,DI STOSB XCHG BX,DI AGAIN:DEC CX JNZ GOONMOV AH,4CHINT 21HCODE ENDSEND START一个简单的例子:53.2.1 源程序结构汇编语言源程序结构特点:1.由若干逻辑段组成,各逻辑段由伪指令语句定义和说明;2.整个源程序以END伪指令结束;3.每个逻辑段由语句序列组成。63.2.1 源程序结构q指令语句-可执行语句,汇编时译成目标码;q空行语句-为保持程序书写清晰,仅包含回车换行符的 语句行。q注释语句-以“;”开始的说明性语句,只起注释作用;q宏指令语句-实际上是一个指令序列,汇编时产

4、生对应 的目标代码序列;q伪指令语句-CPU不执行的语句,汇编时给汇 编程序 提供汇编信息,不产生目标代码;各语句可以是: DATA SEGMENT USE16/USE32 ;定义数据段 (数据定义伪指令序列) DATA ENDS STACK SEGMENT USE16/USE32STACK ;定义堆栈段 (数据定义伪指令序列) STACK ENDS CODE SEGMENT USE16/USE32 ;定义代码段ASSUME CS:CODE,SS:STACK,DS:DATA,ES:DATA ;段寄存器说明 START: MOV AX,DATA ;建立数据段和附加数据段的可寻址性MOV DS,A

5、X ;置DS和ES初值MOV ES,AX (核心程序段)MOV AH,4CH ;返回操作系统INT 21H CODE ENDSEND START ;程序结束一个标准的、以MASM为基础的单模块汇编语言源程序的结构形式:3.2.1 源程序结构78由该标准源程序框架可看出:1. 80X86汇编语言源程序一般具有数据段、附加数据段、堆栈段和代码段。3.2.1 源程序结构实际中,只有代码段必不可少;其它段可以没有;每种逻辑段分别允许定义多个;8086最多允许同时定义4个段。92.必须用段寄存器说明伪指令ASSUME说明各 段寄存器与逻辑段的关系;3.定义的数据段寄存器均要在程序代码段的 起始处赋初值,

6、以建立这些逻辑段的可寻址性;4.每个源程序在其代码段中都必须含有返回 到DOS操作系统的指令语句。3.2.1 源程序结构101)采用DOS 4CH号功能调用2)将主程序定义为远过程3)利用20号软中断调用4)利用DOS的0号功能调用终止当前程序,使其正确返回DOS状态的 方法通常有以下4种:下节3.2.1 源程序结构111)采用DOS 4CH号功能调用;这是返回DOS最有效且兼容性最好的一种 方法。MOV AH,4CH ;功能号4CHAHINT 21H ;中断调用这种方法在代码段结束前加调用语句:返回DOS状态的方法:采用DOS 4CH号功能调用将主程序定义为远过程利用20号软中断调用利用DO

7、S的0号功能调用back3.2.1 源程序结构12CODE SEGMENTASSUME 主过程名 PROC FARPUSH DSMOV AX,0PUSH AXRET 主过程名 ENDPEND 主过程名 一般也称之为“标准序“方法。2)将主程序定义为远过程这种方法在代码段开始处按下述方 式定义主程序:返回DOS状态的方法:采用DOS 4CH号功能调用将主程序定义为远过程利用20号软中断调用利用DOS的0号功能调用3.2.1 源程序结构back标准序133)利用20号软中断调用 这种方式在产生扩展名为.EXE的可执行文 件中是不能使用的,但可用于小模式的扩展名 为.COM的可执行文件中,作为返回D

8、OS的一 种方法。调用方式:INT 20H返回DOS状态的方法:采用DOS 4CH号功能调用将主程序定义为远过程利用20号软中断调用利用DOS的0号功能调用3.2.1 源程序结构back144)利用DOS的0号功能调用该方式也是只有在.COM格式的可执 行文件中才可使用。调用方式:MOV AH,0INT 21H返回DOS状态的方法:采用DOS 4CH号功能调用将主程序定义为远过程利用20号软中断调用利用DOS的0号功能调用3.2.1 源程序结构back153.2.2 语句格式只介绍指令语句和伪指令语句格式。均由4部分(又称4个域)组成:指令语句: 标号:助记符操作数;注释伪指令语句:名字 定义

9、符操作数;注释常量寄存器 存储器 表达式标号、变量:段值、偏移值、类型三种属性表达式:数字表达式、地址表达式163.2.2 语句格式1.标号和名字标号和名字分别是给指令单元和伪指令起的 符号名称,统称为标识符。标号指出了指令的起始地址,程序员可通过 标号来引用所标识的指令;而伪指令语句中的 名字一般用作定义变量名、结构名、记录名等 ,而不作为跳转、调用指令的操作数使用。标号可以任选或省略,而名字则具体取决于 汇编语言中实际规定的定义符。17q字母AZ或az(汇编程序不区分大、小写);注意:标号不允许用数字开头,也不允许用特殊符号单独作为标识符,更不允许用汇编 语言中有特定意义的保留字作为标识符

10、 。q特殊符号 $ _ . : ? ( ) ; / + - * % 段地址为0 ORG , 410H ;偏移地址为410H EQUIPMENT LABEL WORD ;标号EQUIPMENT的 ;绝对地址为0000:0410 STUEF ENDS 在保护方式中,AT类型无意义。 31back32q字长选择:用于定义段中使用的偏移地址和寄存器的字长。只用于设置含有.386和.486语句的段。有两种字长选择:USE16-该段字长为16位,按16位方式寻址,最大段长为64KBUSE32-该段字长为32位,按32位方式寻址, 最大段长为4GB字长选择缺省,则在使用.386/.486伪指令 时默认为US

11、E32。q类别:用于控制段的存放次序,此项缺省则表明 该段类别为空。3.3.1 程序结构伪指令语句back33段寄存器说明语句(ASSUME)格式:ASSUME 段寄存器:段名/组名,段寄 存器:段名/组名,功能:说明源程序中定义的段或组由哪个段寄存 器去寻址。ASSUME语句一般都设置于代码段内,放 在段定义语句之后,为说明性语句。ASSUME的参数NOTHING表示取消以前指定的 段寄存器的作用。说明:3.3.1 程序结构伪指令语句back34组定义语句(GROUP)格式:组名 GROUP 段名,段名,功能:将GROUP定义符后指定的所有段分配在一个64K字节的物理 段中,并赋予该段一个名

12、字-组名。说明: 组名是指出组的始址的一种符号,必须唯一,不能与任何标 号、段名及变量等同名。组定义语句不影响各段的次序,故组内各段不一定连续存放 ,但都必须包含在64KB中。本语句可使定义在源程序中不同类型的段运行时共用同一个 段寄存器,但这些段仍为独立的段。当源程序结构需要多个逻辑段时,使用本语句可节省段寄存 器的使用,实际中最好代码段为一组,堆栈段为一组,数据 段为一组或两组。3.3.1 程序结构伪指令语句back组定义语句示例:DGROUP GROUP ASEG,CSEGASSUME DS:DGROUP,CS:TEXT ASEG SEGMENT WORD PUBLIC DATA X D

13、W? ASEG ENDS BSEG SEGMENT WORD PUBLIC DATA Y DW ? BSEG ENDS CSEG SEGMENT WORD PUBLIC DATA Z DW ? CSEG ENDS TEXTSEGMENT WORD PUBLIC CODE START :MOV AX,DGROUP MOV DS,AX . . TEXT ENDS END START35362)简化段定义伪指令(适用于MASM5.0以上版本) 段次序语句(DOSSEG)格式:DOSSEG功能:各段在内存的顺序按DOS段次序约定排列。说明:本语句用于主模块前面,其它模块不必使用。3.3.1 程序结构伪

14、指令语句back37内存模式语句(.MODEL)格式:.MODEL 模式类型,高级语言功能:指定数据和代码允许使用的长度高级语言是可选项,可使用C、BASIC、FORTRAN 等关键字来指定与哪种高级程序设计语言接口,还可用 关键字OS_OS2或OS_DOS告诉MASM使用的是哪种操 作系统。程序中凡数据或代码的长度不大于64KB时为近 程,否则为远程。本语句一般放在用户程序中其它简化段定义语句前。当独立的汇编语言程序不与高级语言程序连接时,多 数情况下只用小模式即可,而且小模式的效率也最高。说明:3.3.1 程序结构伪指令语句back内存模式类型内存模式说 明SMALL小模式。数据、代码各放

15、入一个物理段 中,均为近程。MEDIUM中模式。数据为近程、代码允许为远程。COMPACT压缩模式。代码为近程,数据允许为远程 ,但任一个数据段所占内存不可超过64KB 。LARGE大模式。数据与代码均允许为远程。但任 一个数据段不可超过64KB。HUGE巨型模式。数据与代码均允许为远程,且 数据语句所占内存也可大于64KB。3.3.1 程序结构伪指令语句38back段语句名格式功 能 代码段语句.CODE名字定义一个代码段。如有多个代码段,要用名 字区别。堆栈段语句.STACK长度定义一个堆栈段,并形成SS及SP初值。(SP)= 长度,如省略长度,则(SP)=1024。 初始化近程 数据段语句.DATA定义一个近程数据段。当用于与高级语言程 序连接时,其数据空间要赋初

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

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号