网站大量收购闲置独家精品文档,联系QQ:2885784924

微机原理与接口技术-七章-汇编语言及汇编程序.ppt

微机原理与接口技术-七章-汇编语言及汇编程序.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理与接口技术-七章-汇编语言及汇编程序

第七章 微型计算机汇编语言及汇编程序 7.1 宏汇编语言的基本语法 7.2 伪指令 7.3 宏指令 7.4 系统功能调用 7.5 汇编程序的功能及汇编过程 7.1 宏汇编语言的基本语法 7.1.2 常量、变量和标号 标号——指令所在内存单元的符号地址 变量 变量——即内存中的存储单元或数据区。 变量名——是存储单元(数据区)的符号地址或名字。 - 变量也有三个属性: -- 段地址—变量所在段的段地址 -- 偏移量—变量单元地址与段首地址之间的位移量。 -- 类 型—有BYTE、WORD和DWORD三种。 - 变量在程序中作为存储器操作数被引用。 标号和变量名的使用规则 组成:A-Z(不分大小写), 0-9, ?@ . _ $ 不能以数字开头,句号(.)只能作为首字符 长度小于31个字符 不能与保留字(指令助记符、伪指令、预定义符号等)重名 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1 错误的:4M, LOOP, AAA, #HELP, +ONE (P457) 7.1.3 表达式与运算符(1) 例1)算术运算符—— +、-、*、/,MOD 例2)逻辑运算符—— AND、OR、XOR、NOT 例3)关系运算符——EQ、NE、LT、GT、LE、GE 7.1.3 表达式与运算符(2) 例4)取地址运算符——SEG、OFFSET 例5)取值运算符——TYPE、LENGTH、SIZE 7.1.3 表达式与运算符(3) 属性运算符——PTR - 用来指定地址操作数的类型。 格式:类型 PTR 地址操作数 类型∈{BYTE, WORD, DWORD, NEAR, FAR} BYTE、WORD、DWORD 用于描述数据存储单元(变量)地址 NEAR、FAR 用于描述转移、调用的目的地址 7.1.3 表达式与运算符(4) 7.2 伪指令 1. 符号定义伪指令(赋值语句)(2) 例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTR[SI+BP] GOTO = JMP … MOV AX, TEN MOV CX, COUNT ADD DIST, FIVE DIST = WORD PTR[SI+BP+1] ADD DIST, AX GOTO LABEL 2. 内存数据定义伪指令(1) 2. 内存数据定义伪指令(2) 2. 内存数据定义伪指令(3) 例2:操作数可以是字符串,例如 STR DB ‘HELLO’ 汇编后的情况如图: 例3: TABLE DB 10 DUP(?) BUFFER DW TABLE,$+3 设TABLE的偏移地址为0080H,则汇编后如下图所示: 3. 段定义伪指令(1) 3. 段定义伪指令(2) 3. 段定义伪指令(3) 例:连接方式 3. 段定义伪指令(4) 例2: 类别 用单引号括起来的字符串。所有同类别的段被安排在连续的存储区域中。 如:给出类别时,在模块1中有段定义: seg1 SEGMENT PARA STACK ‘stack’ … seg1 ENDS 在模块2中有段定义: seg2 SEGMENT PARA STACK ‘stack’ … seg2 ENDS 则连接时这两个段被安排在一起。 4. 段寄存器说明伪指令 ASSUME伪指令 在代码段中,还必须明确段和段寄存器的关系,这由ASSUME语句来指定。如 ASSUME CS:code, DS:data, ES:data 语句中的code和data为段名。 这个语句说明: 1. CS将指向名字为code的代码段 2. DS和ES将指向名字为data的数据段 但要注意,ASSUME伪指令只是告知汇编程序有关段寄存器与段的关系,并没有给段寄存器赋予实际的初值。故下面的语句 MOV AX,DATA MOV DS,AX MOV ES,AX 将段基址装入段寄存器。如果程序中用到堆栈段,则SS也需装入实际的初值。 代码段基地址不需要程序员装入CS寄存器,而由DOS负责装入。 5. 过程(子程序)定义伪指令 8. 定位伪指令 10. 系统隐含进位制伪指令 11. 连接模块引用伪指令(1)

文档评论(0)

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

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

1亿VIP精品文档

相关文档