- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理与接口技术r4
微机原理与接口技术 第四章 汇编语言程序设计 主要内容 汇编语言源程序格式 指示性语句 系统功能调用方法 汇编程序设计方法 综合举例 汇编语言源程序格式 完整的汇编语言源程序由逻辑段组成。 一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段。 段与段之间的顺序可随意排列。 需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点。 通常,程序还需要一个堆栈段。 段由若干语句组成,一条语句通常写成一行。 一个完整的汇编语言源程序 DATA SEGMENT MINUS DB ? NUMBER DB 100DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA COUNT EQU 100 START:MOV AX, DATA MOV DS, AX MOV MINUS, 0 LEA SI, NUMBER MOV CX,COUNT AGAIN:MOV AL, [SI] OR AL, AL JNS NOT_MINUS 汇编语言的语句格式 指令性语句——指令性语句用于表达处理器指令,汇编后对应一条指令代码(目标代码),因而是可执行语句 [标号:] 指令助记符 [操作数] [;注释] 指示性语句——指示性语句指示源程序如何汇编、变量怎样定义、过程怎么设置,也称为伪指令,汇编时不产生目标代码,是不可执行语句 [名字] 伪指令助记符 [参数] [;注释] 指令与伪指令 指令(Instruction) 让CPU产生动作,在程序执行时才处理。 指令就是第3章学习的处理器指令,与具体的处理器有关、与汇编程序无关。 伪指令(Directive) 不产生CPU动作,在程序执行前由汇编程序处理。 伪指令与具体的处理器类型无关,但与汇编程序有关。不同版本的汇编程序支持不同的伪指令。 标号、名字与标识符 标号是反映指令位置(逻辑地址)和属性的标识符,后跟一个冒号分隔 名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号 标识符(Identifier)一般最多由31个字母、数字及规定的特殊符号(如 _、$、?、@)组成,不能以数字开头。 默认情况下,汇编程序不区别标识符中的字母大小写 一个源程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字 保留字 保留字(Reserved Word)是汇编程序已经利用的标识符(也称为关键字),主要有: 指令助记符——例如:MOV、ADD 伪指令助记符——例如:DB、DW 操作符——例如:OFFSET、PTR 寄存器名——例如:AX、CS 操作数和参数 处理器指令的操作数可以是立即数、寄存器和存储单元 伪指令的参数可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分隔 注释 语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性 必要时,一个语句行也可以由分号开始作为阶段性注释 汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理 分隔符 语句的4个组成部分要用分隔符分开 标号后用冒号,注释前用分号 操作数之间和参数之间使用逗号分隔 其他部分通常采用空格或制表符 多个空格和制表符的作用与一个相同 常量、变量和标号 汇编语言的数据可以简单分为常量和变量 常量可以作为指令的立即数或伪指令的参数,变量主要作为存储器操作数 汇编语言语句中的名字和标号具有逻辑地址和类型属性,主要用做地址操作数,也可以作为立即数和存储器操作数 常量 常量表示一个固定的数值,它又分成多种形式 常数 字符串 符号常量 数值表达式 (1) 常数 指由10、16、2和8进制形式表达的数值,各种进制的数据以后缀字母区分,默认不加后缀字母的是十进制数 (2) 字符串 字符串常量是用单引号或双引号括起来的单个字符或多个字符 其数值是每个字符对应的ASCII码值 例如: ‘d’(等于64H) ‘AB’(等于4142H) ‘Hello, Assembly !’ (3) 符号常量 符号常量使用标识符表达一个数值 用来为常量定义符号名 符号定义伪指令有“等价EQU”和“等号=”: 符号名 EQU 数值表达式 符号名 = 数值表达式 EQU不能重复定义符号名,但“=”允许重复定义。例如: X = 7 ;等效于:X equ 7 X = X+5 ;“X EQU X+5”是错误的 举例 NUMBER EQU 200 COUNT EQU 6*9 ADDR EQU ES:[DI+2] MV EQU MOV STRW EQU WORD PTR STRING COUNT
文档评论(0)