第四章伪指令与程序设计.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 宏汇编语言程序设计 8 学时 目 录 4.1 汇编语言程序设计特点 4.2 8086宏汇编源程序的组成 4.3 8086宏汇编语言的基本语法 4.4 8086宏汇编语言常用伪指令 4.5 8086宏汇编语言程序设计技术 程序是一组为完成某种功能而按一定顺序(由算法确定)编排的指令序列。 本章将首先介绍8086宏汇编语言的基本语法及常用伪指令,然后用实例说明8086宏汇编语言源程序的设计方法。 4.1 汇编语言程序设计特点 汇编语言是一种用符号表示的、面向CPU指令系统的程序设计语言。汇编语言具有以下两个基本特点: 程序设计人员能更充分地利用机器硬件的全部功能,发挥机器的长处; 程序目标代码占用内存少,执行速度快,效率高,具有实时性; 汇编语言与高级语言 由于汇编的特点,汇编语言常用于编写计算机系统程序、实时通信程序和实时控制程序。但汇编语言程序依赖于机器硬件,其通用性和移植性都较差。 相对于汇编语言,高级语言的编程方便快捷,通用性和移植性都较好,在一些涉及大量数据处理、人机界面等设计任务的应用程序中,采用高级语言编程更为合适。 从源程序获得目标程序的过程 为了能顺利完成汇编,用户必须为汇编程序提供一些额外的、与硬件有关的信息,如:程序使用的变量应分别存放在内存的哪个单元、堆栈应从内存的什么地址开始等等。 4.2 8086宏汇编源程序的组成 由 “指令”和 “伪指令”共同构成的。 “指令”由8086CPU规定的; “伪指令”说明与硬件有关的信息; “段”结构 因为8086系统的存储器采用分段管理 段 (例4.1) ; ―――――――――――――――――――――――――――― 段名1 SEGMENT ; 一个段的开始 语句1 语句2 …… 段名1 ENDS ; 一个段的结束 ; ――――――――――――――――――――――――――――- 段名2 SEGMENT ; 另一个段的开始 …… 段名2 ENDS ; 另一个段的结束 ; ――――――――――――――――――――――――――――― …… ; 其它段 ; ――――――――――――――――――――――――――――― END ; 源代码结束 语 句 语句是由各种符号(标记)及分隔符按照一定的规则组织起来的一个有序序列。 标识符 操作符 操作数 注释 有三种基本语句: 指令性语句(指令)、指示性语句(伪指令)和宏指令。 指令性语句:即执行性语句(指令),与机器码一一对应,表示某种确定操作,包括四部分: [ 标号:] 指令操作码 [ 操作数 ] [;注释 ] 例: AGAN:ADC SUM,AX ;累加 指示性语句:即说明性语句(伪指令),不对应机器码,只为汇编提供所需信息,由四部分组成: [ 名字 ] 伪指令 [ 操作数 ] [;注释 ] 例: SUM DW 0 ;为结果保留一个字 宏指令:由伪指令定义的指令序列,包括宏定义、宏调用和宏扩展三部分 标识符字段 标识符字段由各种有效字符组成,一般表示符号地址,具有段基址、偏移量、类型三种属性。 很多情况下标识符字段是语句中的可选部分,主要为便于程序的读写方便而使用。 通常有: 标号 名字 操作符字段 操作符字段:由保留字组成,是语句中不可缺少的部分。 包括: 指令助记符 伪指令助记符 操作数字段 操作数字段:表示操作符操作的对象。 操作数可能为以下几种情况: 常量操作数:如 34 等。 寄存器操作数:如 AX 等。 存储器操作数:如[0100H] 等。 表达式操作数:如[AX+2]、SEG NUM1等。 注释字段 注释字段:用于说明、解释程序使之便于阅读或检查的任何文字或字符,位于语句行的末尾,用分号( ; )引导。 注释对汇编不起任何作用,不对应于任何机器码,仅增强源程序的可读性。 例4.6: 多个连续字节单元的累加 DATA SEGMENT ;定义数据段 D1 DB 5 DUP(?) ;连续的字节单元 CC EQU $-D1 ;对单元计数 SUM DW 0 ;为结果保留一个字 DATA ENDS ;数据段定义结束 STACK SEGMENT PARA STACK ‘STACK’ ;定义堆栈段 DB 100 DUP (?) ;100字节的栈空间 STACK ENDS ;堆栈段定义结束 CODE SEGMENT ;定义代码段 ASSUME DS:DATA,SS:STACK,CS:CODE ;对各段进行

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档