第4章汇编语言程序设计

上传人:工**** 文档编号:509560341 上传时间:2022-08-28 格式:DOCX 页数:37 大小:124.99KB
返回 下载 相关 举报
第4章汇编语言程序设计_第1页
第1页 / 共37页
第4章汇编语言程序设计_第2页
第2页 / 共37页
第4章汇编语言程序设计_第3页
第3页 / 共37页
第4章汇编语言程序设计_第4页
第4页 / 共37页
第4章汇编语言程序设计_第5页
第5页 / 共37页
点击查看更多>>
资源描述

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

1、个人收集整理 勿做商业用途第四章 汇编语言程序设计内容简介:本章着重介绍 8086/8088 汇编语言程序的基本结构、 汇编语言的语法规则和程序设计的基本方法。 4.1 程序设计语言概述4。1。 1 计算机语言分类与特点 用于计算机程序设计的语言分为: 机器语言、 汇编语言与高 级语言三大类。(1)机器语言定义 :指令和数据都用二进制代码表示、计算机能够直接 识别与执行的计算机语言叫机器语言。特点: 机器语言直接面向机器,编写、阅读和交流困难, 通用性差;任何其它语言编写的程序最终都必须翻译成机器 语言,计算机才能理解与执行。(2)汇编语言定义 :将机器语言的指令代码、地址等用指令助记符、符

2、号地址等来表示所形成的语言叫汇编语言,也叫符号语言 .特点: 面向机器,通用性差; 汇编语言源程序与编译 产生的机器语言程序(目标代码程序)之间存在一一对应关系。 汇编语言程序能直接利用硬件系统的特性 , 能直接对位、字 节、字、寄存器或存储单兀、I/O端口进行操作; 用汇编语 言编写的程序占用内存空间少、执行速度快、实时性好。(3) 高级语言定义:完全独立于机器的通用计算机语言。特点: 编写时不必考虑不同机器的结构特点 ,高级语言程 序的通用性好; 不能在机器上直接执行,须经过编译或翻译才 能运行; 很难利用不同CPU的特点与特性;生成的目标代 码长、占用空间多、执行时间长。4.1。2汇编语

3、言程序的上机与处理过程 4.2汇编语言的程序结构与语法规则 4.2。1汇编语言程序的框架结构举例:打印输出字符串“ THIS IS A SAMPLE PROGRAM”STACKSEGMENRARA STACK STACKDB 1024 DUP(O)STACKENDS;DATASEGMENT;的汇编程序。ENDS;定义堆栈段;建立堆栈区 堆栈段定义结束MESSAGEDB THIS IS A SAMPLE PROGRAM.DATA定义数据段CODESTARTLOOP1:LOOP2:STARTCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACK PROC FARP

4、USH DS MOV AX,0 PUSH AX MOV MOV LEA CMP JE MOV MOV INT INC JMP RET ENDP ENDS ENDAX,DATADS,AXBX,MESSAGEBYTE PTR BX,$LOOP2AH,5DL,BX 21H BXLOOP1START一 源程序的结构特点1 源程序由若干逻辑段组成,每个逻辑段都有一个段名 , 由段定 义语句 (SEGMENT/ENDS) 来加以定义;2 在代码段的起始处,用 ASSUME 命令说明各个段寄存器与逻 辑段的关系。 并由用户设置各段寄存器(除代码段 CS 外)的 初值,以建立这些逻辑段的可寻址性。3 每个逻辑

5、段由若干行汇编语句组成,每行只有一条语句且不 能超过 128 个字符 ,但一条语句允许有后续行,最后以回车作 为语句的结束。4 整个源程序必须以 END 语句来结束,它通知汇编程序停止汇 编 .END 后面的标号 START 表示该程序执行时的起始地址 .5 每一条语句最多由 4 个字段组成,各字段之间用空格分开。6 每个源程序在代码段中都必须含有返回到 DOS 操作系统的指 令语句,以保证程序执行完毕后能自动返回到 DOS 状态。二 源程序与 PC DOS 的接口 为了保证程序执行完毕后能自动返回到 DOS 状态,可以采 用以下两种方法。方法一:标准序方法;方法如下:(1)将用户程序的主程序

6、定义为 FAR 过程 ,主程序的最后一条指令为 RET;(2) 在主程序的开始处加入以下三条指令PUSH DSMOV AX,0PUSH AX方法二 :非标准序方法; 方法如下 :(1 )将用户程序的主程序不定义为 FAR过程(PROC FAR;ENDP; RET 三句都不要) ; (2)在代码段结束以前加入以下两条指令MOVAH , 4CHINT 21H 4。 2.2 汇编语言的语句语句的定义 :语句是汇编语言源程序的基本组成单位,它规定了 一个基本的操作要求。 而源程序则是完成某个特定 操作任务的一个语句序列。一 语句的种类与格式1 语句的种类 有三种基本语句 :指令语句、伪指令语句和宏指令

7、语句。(1 )指令语句对应于指令系统中的一条指令 ,是可执行语句 .汇编时可以 产生与之一一对应的机器目标代码。如 :MOV DS, AX ; 汇编时产生目标代码: 8EH 与D8H。(2)伪指令语句CPU 不执行的语句 ,只是汇编时给汇编程序提供汇编信息, 如定义符号、 分配存储单元、 将程序分段等。 汇编时不产生目标 代码,也叫“指示性语句” 。如 :SEGMENT/ENDS ;就是伪指令语句, 用来进行段定义。(3)宏指令语句是以某个“宏指令名字” 定义的一段指令序列 .汇编时 ,凡有 宏指令语句的地方都将用相应的指令系列的目标代码插入。2 语句的格式(1)指令语句的一般格式标号: 前缀

8、 指令助记符操作数 ;注释 (2)伪指令语句的格式名字伪指令定义符 操作数 ; 注释 (3)关于标号和名字标号 :是给指令单元起的符号名称,后面必须有冒号(:).标号代表指令所在存储单元的符号地址, 可以作为转移、 循环 等指令的目标地址。名字 :是给伪指令起的符号名称,后面没有冒号.一般用于定义常量、变量、过程、逻辑段等。标号 与名字 的选择必须符合相关规定,详见教材 P144。(4)关于助记符与定义符助记符: 是指令语句的操作码部分的符号表示, 指出指令语句的 操作性质 ,根据需要可以加前缀。定义符: 用于规定伪指令语句的操作功能。 助记符 与 定义符 是语句中唯一不可缺省的部分 .(5)

9、关于操作数 指令语句中的操作数是指令的操作对象。 伪指令语句中操作数的格式与含义相对较复杂,无统一规则 .(6)关于注释部分 注释部分用分号(; )开始,用来对语句的功能加以说明,帮助 阅读理解程序 ,没有其他作用。二 语句中的操作数 操作数可以分为 4类:常量操作数、 寄存器操作数、 存储器 操作数与表达式操作数 .1 常量操作数 在汇编时已经确定其值、运行期间不变化的量为“常量” , 用常量作为操作数就是常量操作数 .包括 :( 1)数值常量。如:MOV AL,36H 指令中的36H( 2) 字符串常量女口: MOV AL,A 指令中的字符串 A( 3) 符号常量如:MOV AL, XYZ

10、 指令中的符号 XYZ(XYZ 需要预先定义)2 寄存器操作数 用寄存器作为操作数就是寄存器操作数。如: MOV AL, 36H 指令中的 AL 就是寄存器操作数。3 存储器操作数 存储器操作数分为标号与变量两种:(1)标号-是某条指令所存放单元的符号地址,这个地址一定在 代码段内。如:在如下程序段中:LP1 : INC CX 。JMP LP1标号 LP1 是指令 INC CX 所在存储单元的符号地址,在指令 JMP LP1 中作为操作数,属于存储器操作数 .(2)变量 -变量是指存放在存储单元中的值,这些值是可变的。但为了便于对变量的访问 ,变量常常以变量名的形式出现在 程序中 .而变量名可

11、以认为是存放变量的存储单元的符号地址,一般出现在数据段、附加段或堆栈段中如: X DB 0这里:定义了一个字节变量,初值为 0,占据内存中的 一个字节单元。 变量本身是存储单元的内容, 但无法直接表 示它,只好用该单元的地址 X 来表示,这里 X 是变量名 .所以: MOV AL , X指令中,X属于存储器操作数.(3)标号与变量都与存储器地址相关联 ,都具有以下三种属性 : 段属性( SEGMEN)T- 段基址,即标号与变量所在段的段地址。 偏移量属性(OFFSET)-即标号与变量所在的单元的偏移地址 类型属性 (TYPE)- 标号的类型属性 是指标号与使用它的指令之间的距离远近。即 : 当

12、标号作为转移指令的目标操 作数时 , 若是段内转移, 这个标号的类型属性是 “近”( NEAR) , 若是段间转移,这个标号的类型属性是“远”( FAR)。变量的类型属性 是指变量存取单元的字节数大小, 类型有字 节(BY TE、字(WORD)双字(DWORD等。4 表达式操作数表达式也可以作为操作数, 它由操作数与操作符 (或叫运算 符、组成 .( 1、表达式的分类 数值表达式 在汇编时产生一个数值 , 只有大小而无其 他属性。如: MOV BH, 3+5 ; 指令中, 3+5是一个表达式操作数, 由运算对象(操作数) 3、5 与操作符 +组成。由于 3+5只产生一 个数值 8(在汇编的时候

13、产生) ,因此是数值表达式。 地址表达式 若汇编时,对表达式运算的结果是存储器 地址,那么该表达式就是地址表达式。如: MOV BX , 1000H MOV AL , BX+24H 汇编时,对表达式BX+24H的运算结果是1024H ,这是存 储器的一个偏移地址。因此 BX+24H 就是一个地址表达式操作 数。(2)表达式中的运算符(操作符) 详见教材 P146 的表 4-1 主要有 :算术运算符、逻辑运算符、关系运算符、分析运算 符与合成运算符等几种。算术运算符;有+、-、*、/与M0(求余)等。举例:DA EQU300MOVAX,DA-80; 汇编时,等价于 220;MOVBX,DA MO

14、D 100; 汇编时,等价于 0;MOVCX,DA/100; 汇编时 ,等价于 3; 逻辑运算符 ;有AND OR XOF与 NOT只适用于数值表达式,运算的对象只能是常数,得到的结果也是常数。举例 : MOVAL , NOT80H汇编时,等价于MOV AL ,7FH 关系运算符有EQ (等于)、NE(不等)、LT(小于)、GT (大于)、LE(小于等于)、GE (大于等于)几种。关系运算符的两个操作数必须同 是数值或同是一个段内的两个存储器地址。 比较时, 如果关系不 成立(假),则结果为 0,若关系成立 (真),则结果为全 1。 举例: MOV AX, 10H GT 16 汇编时,相当于: MOV AX , 0; 因为比较结果为假。MOV CX,10H EQ 16汇编时,相当于 :MOV AX , 0FFFFH; 因为比较结果为真。 分析运算符。在下一节讲 合成运算符 .在下一节讲 关于各运算符的优先级见教材 P147表4 2. 4.3 汇编语言的伪指令语句80X86/Pentium 宏汇编提供符号定义、 数据定义、 程序分段 定义、 模块定义、 过程与宏定义、 条件汇编和列表控制

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

当前位置:首页 > 学术论文 > 其它学术论文

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