




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10 / 10A51汇编器是运行于IBM PC系列及其兼容机上的交叉汇编软件,其主要功能是将MCS-51系列单片机汇编语言源程序翻译成符合Intel目标文件格式的可再定位的目标代码,经过L51连接器的连接和装配,产生可被DS51仿真器调试或其它任何一种与Intel 目标文件格式兼容的仿真器使用的绝对目标代码. 一:A51的符号:在A51中可使用符号表示数值(EQU),地址和寄存器名,符号具有段类型,作用域,值域和可变性等属性. 符号的段属性:指出符号所位于的地址空间.段类型有: NUMBER 无类型符号 DATA DATA段符号(可直接寻址的内部RAM空间) IDATA IDATA段符号(可间接寻址的内部RAM空间) XDATA XDATA段符号(外部数据存储空间) BIT BIT段符号(内部RAM低地址区的可位寻址的空间) CODE CODE段符号(程序存储器空间) REGISTER 寄存器符号 作用域:指出符号是外部的,局部的还是全局的.(PUBLIC,EXTRN关键字说明) 二:标号:定义标号时,标号名后必须接冒号”:”,以示区别,每行只能定义一个标号,标号一经定义,其值为当前地址计数器的当前值,因此标号代表了指令和数据的地址,不能重复定义. 三:特殊的汇编符号:A51宏汇编语言定义了代表CPU寄存器的特殊符号,这些是保留的关键字,AR0-AR7:表示当前工作寄存器的R0R7的绝对地址,它的值取决于指令所选择的工作寄存器组. 四:运算符:有三种1):算术运算符包括:+,-(正负号),加-+,减,乘,除,MOD(取模),()括号,改变运算顺序.2):二进制运算符号:用来对二进制数进行按位取反,移位或逻辑运算.包括:NOT(按位取反),HIGH(取右边操作数的高8位,LOW(取右边操作数的低8位)SHR(右移位),SHL(左移位),AND(逻辑与),OR(逻辑或),XOR(逻辑异或).3):关系运算符:=,=,=,. 所有运算符的优先级顺序:()NOT,HIGH,LOW+,-(正负号)*,/,MOD+,-(加减)SHR,SHLAND,OR,XOR=,=,=. 数值表达式:数值表达式由运算符和操作数组成,一个操作数又可以是表达式,与符号具有段属性一样,表达式也具有段类型属性,表达式的类型依赖于操作数的类型.表达式的类型如下:BIT,NUMBER,CODE,DATA,IDATA,XDATA.大多数的表达式是无类型的,当表达式中包含有段类型的操作数或者是子表达式时,运算结果的段类型遵循下面的原则: 对于单目运算符:(+/-/HIGH/LOW/NOT)表达式的结果与操作数具有相同的类型. 对于所有的双目运算符(除+/-),表达式的结果均为无类型的结果. 对加减运算,只有当其中的一个操作数具有段类型的时候,运算结果才具有相同的段类型,如果两个操作数具有段类型,即使他们的段类型一样,结果也是无类型的(NUMBER). 总结:只有当操作数加上或者是减去一个无类型时,才可能产生一类型,其他所有的组合均产生无类型的表达式. A51提供了伪指令,可以利用这些伪指令在汇编程序中定义符号,保留和初始化存储空间,定位目标代码等功能,伪指令中除DB,DW外均不产生目标代码,但可以改变汇编器的状态,并将有关信息(如段定义)加到目标文件中. 伪指令分四类: 1):定义符号:SEGMENT,EQU,SET,DATA,IDATA,XDATA,BIT,CODE 2):保留和初始化存储空间:DS,DB,DW,DBIT 3):程序链接:PUBLIC,EXTRN,NAME 4):汇编状态控制和段选择 :ORG,END,RSEG,CSEG,DSEG,XSEG,ISEG,BSEG,USING 一 :定义符号的伪指令 1)SEGMENT 格式: 段名符号 SEGMENT 段类型 再定位类型 SEGMENT指令可声明一个可再定位(区别于CSEG,DSEG,XSEG,BSEG,ISEG等 定义的在相对应的空间固定地址定义的绝对段在连接的过程中不允许重新定位)的段符号和一个可选的再定位类型,段符号可以用来定义段,L51连接器可将多个模块内的具有相同段名和再定位类型的几个段合成为一个段.段类型说明了段所处的地址空间. 如果是编写的汇编程序要与C源程序接口,即被C源程序调用,则全部的汇编子程序所命名的定义的代码段的段名必须是可用SEGMENT来定义的,而且名字的命名的方法也应该参照C51编译器产生的局部段的段名的转换规则.段名的作用主要是在汇编的时候用RSEG来激活的,在连接定位的时候用到的.与段名相应的是用于存储和传递参数的别名,可以在汇编源程序中直接应用局部段的别名,这个别名主要是在传递函数参数的时候用的.在汇编程序中要用PUBLIC 声明被其他模块引用的全局符号. DATA (可直接寻址的内部RAM空间) IDATA (可间接寻址的内部RAM空间) XDATA (外部数据存储空间) BIT (内部RAM低地址区的可位寻址的空间) CODE (程序存储器空间) 可选的再定位类型定义了L51连接时的定位方式,再定位类型: UNIT:定义一个可开始于任一单元的段对于BIT型的段,一个单元是一个位, 其它所有的段一个单元是一个字节. PAGE:定义一个起始地址必须是256的整数倍的段,段的绝对地址由L51自己计算,该类型只允许用于XDATA和CODE类型段. INPAGE:定义一个由L51连接后必须包含在256B的块中,只适用于XDATA和CODE段. INBLOCK:定义一个L51连接后必须包含在2KB中的段,只适用于CODE段. OVERLAYABLE:定义一个可与其他段交叠的覆盖段,其段名符号必须按C51或者PL/M51的规则命名.C51把局部数据段和局部位段定义成?DT?FUNCTIONNAME?MODULENAME和?BI?FUNCTIONNAME?MODULENAME这是在small模式下.其他的模式略有不同。 BITADDRESSABLE:定义一个L51连接后位于可位寻址的区,段长不能超过16B. 2) EQU 格式: 符号名 EQU 表达式 符号名 EQU 寄存器名 EQU伪指令定义一表示数值或寄存器的符号,该符号可用于表达式或助记符指令的操作数,EQU指令定义的符号不能被改变或重新定义,其段类型取决于表达式中的操作数类型类型,无类型的EQU符号可用于任何表达式中. LIMIT EQU 200 VALUE EQU LIMIT-100+A COUNTER EQU R5 3) SET 格式: 符号名 SET 表达式 符号名 SET 寄存器名 SET指令的功能与EQU指令的功能一样,区别是SET指令定义的符号可以再定义和改变. VALUE EQU 200 VALUE SET VALUE/2 COUNTER SET R1 TEMP SET COUNTER/2 4) BIT 格式: 符号名 BIT 表达式 BIT指令定义一表示位地址的符号,该符号一经定义便不能重新定义和改变. DATA_BSEG SEGMENT BIT RSEG DATA_BSEG CTRL DS 1 FLAG BIT CTRL.1 FLAG2 BIT FLAG+1 5) DATA 格式: 符号名 DATA 表达式 DATA指令定义一表示MCS-51内部数据存储器字节地址的符号,表达式必须是一个绝对地址值或者是一个简单的再定位表达式(即数值确定的,且其值必须在0255之间,类型必须是DATA或者是NUMBER类型) 例如在汇编程序中: PORT DATA 90H RESULT_L DATA 40H RESULT_H DATA RESULT_L+1 6) XDATA,IDATA,CODE 均是也和DATA一样,都是定义一个代表相应存储空间单元的地址符号,表达式也必须是相对应的类型或者是NUMBER类型。 二 初始化和保留指令 1)DS 格式: 标号: DS 表达式 DS指令以字节为单位,在内部或者外部地址空间中保留存储空间,表达式中不能包含前向地址参考量,可为除BIT段的任何类型。该伪指令语句使当前地址计数器加上表达式的值,需要注意的是地址计数器加上表达式结果的值不能超出地址空间的范围。(无论是汇编器还是编译器,对每一种不同类型的地址空间(DATA,CODE,PDATA,XDATA,BIT)都产生一个独立的地址计数器,每汇编一条指令,计数器都会自动增加,不过可以用ORG伪指令改变当前段地址计数器,用ORG伪指令表达式的值作为当前段地址计数器的初值,而当前段的改变可以用RSEG伪指令来改变。 RSEG ?DT?FUNCTION?MODULENAE-声明当前段为局部数据段 ?FUNCTION?BYTE:-函数局部段的别名 TIME: DS 5 2) DBIT 格式 标号: DBIT 表达式 以位为单位在可位寻址段内保留存储空间, 表达式中不能包含前向地址参考量或者是再定位的符号和外部符号,该指令使当前地址计数器增加表达式结果值,其增加量以位为单位. 3) DB DW 格式: 标号: DB/DW 表达式1,表达式2, 这两个指令的作用相同,均是以字节或者是字初始化程序存储空间,上面是保留存储空间,存储空间可以使RAM和ROM,而这两个指令直接就是初始化程序存储空间. Table: DB “any key to continue!” Requst: DB LOW(Table),HIGH(Table) 三:程序连接伪指令1) PUBLIC 格式: PUBLIC 符号1 ,符号2,符号3.PUBLIC 指令声明可被其他模块使用的全局符号,该符号必须在本模块内定义,但是寄存器和段名不能声明全局符号,全局符号在汇编模块中就是语句前的标号,一般在编写C调用用汇编语言实现的函数很有用.例如: ?PR?FUNCTION_NAME?FILE_NAME ? SEGMENT CODE PUBLIC FUNCTION_NAME/_FUNCTIONAMERSEG ?PR?FUNCTION_NAME?FILE_NAME? FUNCTION_NAME/_FUNCTIONAME: 从寄存器或者存储区域中取回需要的参数 汇编代码 ; 把返回值放入需要规定的寄存器 RET/RETI -返回 FUNCTION_NAME前有没有下滑线取决于函数有没有使用寄存器传递参数.2) EXTRN 格式 EXTRN 段类型1 (符号表1) ,段类型2 (符号表2) , 指令声明本模块引用的外部全局符号,该指令可出现在出现在源程序的任何地方,每个外部符号都必须是CODE,DATA,IDATA,XDATA,BIT或者NUMBER等段类型之一,段的类型限制了符号使用的范围,例如CODE只能做JMP和CALL等转移和调用类指令的目标地址,而不能做MOV等指令的操作数,L51在连接的时候检查外部符号是否和相应的全局符号相匹配,无类型的符号可以任何段类型的同名符号相匹配.3) NAME 格式 NAME 目标模块名 - module_name 目标模块名 NAME指令定义当前程序模块的目标模块名,目标模块名不同于目标文件名,也不同于源程序名,当未给出目标模块名的时候,则以不带扩展名的源文件名命名,且每个目标模块只允许一个名字.四:状态和段选择指令1) END 该指令必须位于源程序的最后一行,且只能在程序中出现一次,在END的语句不汇编.2) ORG 格式 ORG 表达式 ORG伪指令改变当前汇编器当前段地址计数器,用表达式的值作为当前段地址计数器的值,表达式中不能有前向参考量,并且只能是一个绝对地址或简单再定位表达式.3) RSEG 格式 RSEG 段名 RSEG指令选择一个已定义的再定位的段作为当前有效段,具体什么段,由在定义段名的时候段的类型决定, 可在当前段保留存储空间,初始化程序空间,安排程序代码.例如: DATA_SEG SEGMENT DATA CODE_SEG SEGMENT CODERSEG DATA_SEG DS 2 COUNT: DS 3RSEG CODE_SEG STRING: DB “Press any key to continue”,0START: MOV A,#80H END4) CSEG,DSEG,ISEG,XSEG,BSEG格式: CSEG AT 绝对地址值 DSEG AT 绝对地址值 ISEG AT 绝对地址值 XSEG AT 绝对地址值 BSEG AT 绝对地址值以上的几条指令分别和CODE,DATA,IDATA,XDATA,BIT段相对应,当指令中包含一个基地址(AT绝对地址值时),汇编器结束当前段并产生一个起始于绝对地址的新段,如果指令中不包含一个基地址选项,则当汇编器已经有当前段的时候,则不改变当前段,即忽略该指令, 例如: BSEG AT 70H DECMODE: DS 2 CSEG AT 0H LJMP MAIN LJMP INT_0需要注意的是:这里的AT和变量的绝对定位_at_不一样,那是C51编译器的关键字的扩展,在C元文件中可以用的,而这个指令是在A51中的.5) USING 格式 :USING 表达式 USING指令使A51选择适当的寄存器组计算寄存器的绝对地址,该指令类似于C51中的REGISTERBANK编译控制指令的功能,USING不进行寄存器组的切换,表达式的值必须是03之间,由表达式的值A51可以计算出寄存器符号AR0AR7的绝对地址,当程序中需要使用Arn的时候,有必要先使用Using. 例如: USING POP AR2 PUSH AR3四:A51的宏指令A51允许使用宏定义,在汇编时对被调用的宏进行展开,一般用在需要重复一串指令的时候.可以用宏嵌入参数的办法来实现,减少发生错误的可能性.A51能处理MACRO,ENDM,LOCAL,REPT,IRP,IRPC,EXITM宏调用等宏指令,在程序中,宏必须先定义才能调用.1) MACROENDM 格式 宏名 MACRO 形参表 宏体 ENDM 宏能嵌套定义,用ENDM来结束本级宏定义,汇编器能自动计算MACRO指令的个数,并将每个ENDM指令与MACRO相匹配.宏的调用:宏一经定义便可在程序中多次调用,调用的时候必须给出宏名和实参,以便在扩展的时候用实参替代形参, 格式 : 标号 宏名 实参表 MACRO_NAME MACRO X,Y MOV A,#X MOV B,#Y MUL AB ENDM 程序; MACRO_NAME 20H,30H ;宏调用2) LOCAL 格式: LOCAL 符号名 ,符号名,功能:将宏体中的符号定义成局部的,LOCAL指令必须紧跟在MACRO指令之后,也就是说宏体中的符号必须在使用之前定义成局部符号,否则在重复调用该宏时会产生错误.LOCAL指令只能在宏体内部使用.五:A51的汇编控制指令 A51提供的汇编控制指令,针对A51汇编器的,用于改变A51的状态,A51汇编器能够识别2类汇编控制指令,首要的汇编控制指令和次要的汇编控制指令. 首要控制指令:首要控制指令只能在源程序中出现一次,可以放在命令行或者是源程序的开头,他们不能被别的控制改变.如果需要使用多个首要控制指令,则最好把他们放在源程序的开头,(这样可以在命令行中少输入这些指令,)首要控制指令在源程序中一行只能由一个首要控制指令, 命令的格式: $ 汇编控制指令 (参数) 以$符号开始,且位于第一列,符号与控制指令助记符之间要有空格. 次要控制指令,次要控制指令不能出现在命令行中,只能出现在源程序中,其命令的格式个首要控制指令的格式一样. 一: 首要控制指令 1) DEBUG/NODEBUG 缩写:DB/NODB 默认值:NODEBUG 功能:DEBUG指示A51在目标文件中加入DS51或其他的Intel兼容的仿真器使用的调试信息,而NODEBUG指示不加入调试信息. 1) OBJECT/NOOBJECT 缩写: OJ/NOOJ 参数:仅OBJECT 需要以用括号括起来的文件名 默认值:OBJECT(源文件名.OBJ) 功能:OBJECT指示生成以文件名参数命名的目标文件,如果该指令末未带文件名,则默认目标文件名与源文件名相同,扩展名.OBJ,通常目标文件与源文件位于同一目录下.NOOBJECT指示不生成目标文件.默认的控制是生成与源文件同名,扩展名.OBJ. 2) PRINT/NOPRINT 缩写:PR/NOPR 参数:可有可无的由括号括起来的文件名(仅PRINT指令需要) 默认值:PRINT(源文件名.LST) 功能:PRINT生成以文件名参数命名的列表文件,如果未指定文件名,默认的列表文件名为源文件名.LST.NOPRINT指示不生成列表文件.默认的控制是生成与源文件名同名的,扩展名为.LST的列表文件. 3) SYMBOLS/NOSYMBOLS 缩写:SB/NOSB 默认值:SYMBOLS 功能:SYMBOLS指示在列表文件中生成符号表,该指令的功能可被NOPRINT抑制,而NOSYMBOLS指示不生成符号表,该指令的功能可被XREF(在列表文件中生成符号的交叉参考列表)指令激活,默认的控制为SB,即在列表文件中生成符号表. 4) MOD51/NOMOD51 缩写:MO/NOMO 默认值:MOD51 功能:MOD指令使编程者能使用预定义的8051的BIT和DATA符号,而NOMOD51使51不识别8051所定义的所有符号,从而使用户可以对MCS-51系列其他的单片机编程并自定义符号文件.自定义的文件必须使用 $ INCLUDE指令包含到源文件中去,(这种格式是在A51源文件中,在C源文件中使用预处理指令 #Include 这种格式.)在这种格式下,需要使用 $ NOMOD51 指令,否则会因为多重定义产生错误. 5) COND和 NOCOND 默认值:COND 功能:指示在列表文件中列出IFELSEIFENDIF条件汇编结构中未汇编的部分.NOCOND指示不列出未汇编的部分,此时未列出的部分可以通过丢失的行号识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力的关键是开放
- 2025年感染科医院感染控制流行病学考试答案及解析
- 2025年内分泌科代谢性疾病诊断与治疗考察答案及解析
- 2025年康复科功能康复训练设计案例答案及解析
- 民族地区课件
- 2025年肿瘤科细胞病理学判断实战训练答案及解析
- 2025年急救科常见危急病情处理模拟测试题答案及解析
- 民族团结的课件教学
- 2025年儿科日常疾病护理技能评估答案及解析
- 医患关系主题小品
- 环卫工人防暑课件教学
- 华为投资控股有限公司2025年半年度报告
- 志愿服务证明(多模板)
- 营业执照模板
- 学前卫生学第一章
- 马克思主义的世界观和方法论
- 国土空间规划-学习分享PPT幻灯片课件(PPT 37页)
- 危险货物道路运输规则jtt617-2018
- 输煤栈桥施工方案
- 碳纤维、钢板加固板计算表(根据2013版加固规范 编写)
- 1.3.1有理数的加法导学案第1课时
评论
0/150
提交评论