ASM宏汇编使用指导手册.docx
《ASM宏汇编使用指导手册.docx》由会员分享,可在线阅读,更多相关《ASM宏汇编使用指导手册.docx(15页珍藏版)》请在冰点文库上搜索。
ASM宏汇编使用指导手册
ASM-51宏汇编使用手册
ASM-51宏汇編主要川來开发Inter8051系列单片机.它具有宏处理.数据处理•列液处理和条件处理等多种功能。
源程序的编写完全采用Inte「标准助记符和行恪式。
在編写程用过程中.吋借助于文本编辑(Windows的记泉本)或文字处理软件Word等編休经ASM-51汇編后生成列表输出文件(丄ST)和目标代码文件(・HEX)。
此目标代码文件(.HEX)町H接用CZS・51或MedWin.Keil、Debug8051进行模拟/调试,或宜接用于硬件仿真器上运行•当然.这也是要烧写到单片机ROM中的代码。
1、宏汇編语肓的基本i吾法
1、1宏汇編的特点
ASM-51宏汇編完全支持Inte「助记符的汇編语育•它含有宏语句.英文人小写字母・变册名.标号等不受限!
有二十.
十六进制和弗参数类型.有汇編控制播令和多层条件语句.程用逻轲分段.还冇模块化程序设汁的连接功能.汇編速度抉等特
点。
r2汇编处理过程
(1)用行编辑EDLIN或文字处理软件WS或全屏毎編辑软件PE等.編辑宏江編
语言谏程序.它的文件扩展名为。
ASM.
(2)用ASM-51宏M褊程序对上述漁程序文件进行汇編.产生扩展名为丄ST的列表输出文件和扩展划为.HEX的目标代码文件(.HEX).列茨输出文件包含淞程序语句所汇編成的代码•以及有关的地址.语句和符号表等.目标代码文件包含源祝序语句所汇编成的代码.不包含任何符号信恩或助记符。
进行模拟/调试.或宜接用于硕件仿真器上运行。
1、3语句
汇編语肓可分为两类语句:
捋令性语句和描示性语句.
(1)描令性语句
这一类语句是抬在汇编过程中能生成揣令代码的语句(如MOV•DEC等).其恪式为:
[标号:
][摇令助记符][操作数][•注释]
其中方括号[]中为选择项.卜同。
(2)抬示性语句
这一类语句即通帘所说的伪折令•它揣示汇編程序后面的播示性语句如何产生代码.
ASM-51宏汇編完全支持Inte「助记符的汇編语乳因此汇編程序的格式.抬令完全号8051订编语肓一样.这屮不再介绍它们的揣令系统。
1.4常煲与数值迄貝
(1)常量及其表示
常如就足在『編时已经确定的值。
徧1•蹦语肓中.常fit主要用作指令性语句中的宜接操作数.也对用于存储器操作的组成部分(如位移扯),或者为伪描令中的变址输初値.
为便于程序设计・語fit有多种茨示形式:
二、十.十六进制数和字符串等.它们的格式备不相同.井采用不同的基数标记加以区分。
表-・1列出其格式。
表"1
数据形式格式取值范罔例如备注
2进制********B0.110011100B
10进制******0,1・2...945723缺省基数标记
16进制****H0・1・・・E・F0CDE3H说帕面一个字符应^0-9
ASCII'**•ASCII'AD'只有DB命令中使用
常壇以数值形式自接写在汇編语肓的语句中称为字面陆扯・若预先为它定义一个符号名・然后在语句中用符号名来茨示该常址称符号幣此使用符号常蚩的优点可改善程序的町读性.它的定义需要使用伪操作命令”EQUFf。
(2)数值运斃
宏汇編中.所有滲数值均被认为足整数.并以16位的形式存放.农示的范用足0—65535.所冇算术操作均对整数以补码形式运算。
(1)基木运算
『編语肓对常址允许逬行笄术运斃.逻紺运笄.分离运并等三种类型的运算。
如诜・・2所示。
表・・2基本运以
运w
操
作含义
以ADD为例
算
+
加操作
ADDA・Rl+36
-
减操作
ADDA.R1-2EH
*
乘操作
ADDA・Rl*0E3H
术
/
除操作
ADDA・Rl/23
说明:
R1为符号常址。
(2)综合运算
塚合运算规则1:
计算表达式时.
所冇的运乳全部从左到右倾序进行.遇到操作数就进行运算.不考电优先关系.括号冇助
于视觉理解.但不改变茨达式的?
汁以顺序。
例如:
R1SETNOT(OC5FHOR000CH)
其结果应为0F3ACH.
综合运弊规则2:
当两个操作数之何没有参数相隔时.笫:
个操作符优先于第一个操作符汁第,
例如:
R1SETNOT10011010B
其结果应为65H。
1、5程序分段
8051系列的处理器的结构.把内存分成五个独立的内存段.即代码段(段名CSEG).数据段(段名DSEG).外部段(段
名XSEG)・功能段(段名FSEG)和位段(段名BSEG)等.备个段在源程序中的次序吋以任®段的数目町以根据需要确定.
原则I:
不受限制。
程用中的所有段都必须用段名开头.段结束语匂ENDS结束.
1、6源文件
祿文件足由汇編语言代码和汇編程序描令组成的ASCII字符文件.扩展名为。
ASM。
源文件的毎一语句行.故多有四个
域。
毎一行的长度不超过80个字符.且以"回车"键结束。
1、7列茨输出文件和目标代玛文件
(1)目标代码文件(.HEX)
目标代硏文件(・HEX)足ASCII文件•它只包含由备种程序语句所生成的代码.而不包含任何信息或助记符•该文件足能够在处理器上运行的实际机器描令码。
目标代码文件格式如卜•:
:
ccaaaattddaaddss
计数器数据类型记录地址回车
记录地址代码的字节和校验
目标代码文件(・HEX)的毎一行以一个日号开始.后面跟若的歡7和符号分别表示I穴进制数据的il数器(cc).记录笫一个数据字节的16位地Wi(aaaa).目标记录的数据类型(tt)•代码的实际字节(dd)・计数器从笫一个数据字节到錢后的所有字节值累加和的相反数即和校瞼(ss)等等。
(2)列茨输出文件(.LST)
列茨输出文件也足个ASCII文件•它由源程序和目标代码文件组成.吋作为程序文档也叫皴打卬•
列表输岀文件足分页显示.打卬的.其长度由缺省、值或伪折令$PAGE决定。
侮页一开始描出汇編程序的类型.版本以及页号等。
2、伪操作描令
汇编语肓中的描示性语句(伪折令).不◎指令性语句会产生目标代码.它主要是用来"控制指挥“汇編程序如何把播令性语句翻译成目标代码。
除本身伪描令申请分配一部分存贮:
空间作数据区和堆栈区外.不产生任何目标代码。
按照它们的功能・人致分成七类:
符号定义伪操作.段定义伪操作.数据定义娓伪操作•列茨伪操作.条件伪操作.宏处理伪操作以及其它操作等。
如表•・3所示.
表八3伪操作描令
序号分类伪操作指令
1符号定义伪操作EQU・=・DATA.BYTE.WORD,BIT.SET
2段定义伪操作ORG・END・CSEG・DSEG・XSEG・FSEG・ENDS
3数据定义伪操作DB.DW・DS
4列表伪操作$TITLE・$SUBTTL・$PAGE・SLIST・SNOLIST・$NOCODE
5条件伪操作
IF・ELSE.ENDIF
6宏处理伪操作
MACRO・ENDM
ALTNAME・INCLUDE
2・1符号定义伪操作
符号定义伪操作及其格式:
符号名符号定义名常fit或农达式
其中符号定义名町以为EQU.=•DATA・BYTE.WORD・BIT.SET^.卜面就足这些符
号定义伪操作的用法及说明。
如茨一4所示。
表一4符号定义伪操作
符号定义名用法说明
8051中没有字操作
BIT川来定义一个字位类型
SET用来定义整数类型的符号名符号名町車名定义
该符号名将被
DATA与BYTE的区别:
DATA与BYTE是相类似的伪折令。
为程序运行到DATA伪指令定义的符号名时.显示。
而由BYTE宦义的符号名不被显示。
2、2段定义伪操作
(1)ORG用干设賈或改变程用计数器的值。
其恪式为:
ORG密数或茨达式
例如:
ORG0008H
ORG$+5
其中$茨示程序汁数器的当梢值。
(2)END茨示源代码结束。
其格式为:
END常数或茨达式
汇編程序遇到ENDift句即停止运行.若程序中没有END.则在汇編谅程序时显岀错
(3)8051系列的处理器把內存结构分成五个段.代码段CSEG.数据段DSEG.外部段XSEG.功能段FSEG和位段BS
EG等.其用法及区别如茨一5所示。
在汇編以上各段所定义的符号时・系统根据符号所在不同段.赋与不同类型的字母•如表-・6所示。
2、3数据定义伪操作
数据定义伪操作恪式:
[标号:
]数据定义名[茨达式茨达式2・。
。
]
其中数据定义名町为DB・DW.DS等。
如茨一7所示.数据定义伪操作的含义及说明。
茨・・5段定义伪操作
段用法及区别
代码段(CSEG)包含由处理器所执行的程用.段名可缺乩有目标代码生成。
数据段(DESG)由内部工作寄存器的处理器的RAM组成。
用来对程用使用的数据地址赋符号孙.人多以ORG・DATA・BY
TE.WORD・EDNS等组成。
无目标玛生成'
外部段(XSEG)由外部工作寄存区和RAM组成。
使用方法同数据段.无目标码生成。
功能段(FSEG)由特殊奇存器位賈组成(如:
输入/输出部件.汁时器.中断控制和连续的奇存器部件接口等),无目标代码生成。
位段(BSEG)由一些独立的位组成•町以用布尔函数实现.该段地址被解解为位地址。
无目标代码生成。
说明:
(1)在不同的段中类型符号不同:
⑵字节型操作数(Byte)—般通过DATA描令赋给符号。
字型操作数
一股通过WORD描令賦给符号•
(3)如果各段中用BYTE赋值•则在笛段中符号全以S表示。
在SIM51ffi
拟/调试中的符号区显示功能中•对BYTE赋値的将被跳过。
(4)在各段中.位类型町以用BIT捋令赋给.
表一7数据定义伪操作
数据定义名含义说明
DB用于定义一个字节包含的値茨达式不足字符串时.每个茨达式赋给一个字节.足字符串时.用单引号*"作
为分隔符。
DW用干定义一个字(16位)每个浪达式占16位。
如果表达式中的存芒内容为字符串•只取盪后两个字符。
若字符串只有一个字符.高字节BTOJ
DS宦义一个存贮区通常用在代码段中.作为程序的一部分.若用在数据段.外部段•則作为位理标志使用。
格式:
$TITLE[标题行]60个字符。
若标题行省略•原来定义的标题行作废。
$SUBTTL给源程序揩定一个制标題制标题不加"\其最人长
恪式:
SSUBTTL[制标翳门度60字符.若制标题行省略.原来定义的副标题行作废。
$PAGE用干形成或定义新的一页或行数汇编时页长为66行(适合干格式:
$PAGE[茨达式]标准打卬纸)。
茨达式
帰人为65535.说小沟12・茨达式缺省.则从新的一页开始。
$LIST使源程序汇编时.产生程用淸单汇编时无此播令照样产生淸单。
格式:
$LIST
$NOLIST使漁程序汇編时不产生程序淸单
格式:
$NOUST
$NOCODE源程序汇編时•条件汇编程烬值没冇此描令汇編时.不论其值足为锻的不产生淸单。
欺假的条件都不产
生目标码。
恪式:
$NOCODE
2、4列茨伪操作
如茨一8所示.列表伪操作的含义.格式及说明。
2、5条件伪操作
条件伪操作格式:
IF表达式
[程序块1]
[ELSE]
[程序块2]
ENDIF
当IF抬令中的表达式为真时.被汇编的代码段足程序块4当IF指令中的茨达式为假时.彼汇編的代码段足程序块2「在
一个条件结构中.仅有一个代码段被汇編•其它的则彼忽略。
2、6宏处理操作
在源程席中.如果育•段程序需要参次使用.为使程金不咆复书写这段程席•町用宏定义把所碍要鱼复出现的程序块定文成
宏捋令•此后在宏折令出现的地方.宏汇編程序总足自动地把它们替换成相应的代码段。
(1)宏描令格式
[宏揣令名]MACRO[形式参数.•&°]
代码段
ENDM
在宏宦义中.使用了.形式参数二它们引用宏播令时被给出的一些名字或数值(实在参数)所替换•使用形式参数给宏描令带來了很人的灵活性。
(2)宏调用恪式
[宏折令名][实在参数•。
。
。
]
注,&:
1,当有两个以上的实⑥数时.它们之的要用逗号.空恪或列茨符隔开。
2、实参数项将对应普换宏抬令中形式畲数。
如果形式歩数为标号时.则在宏调用中・实型也应为标号.且要求实够是唯
一的。
如果宏定义中有自己的标号.则在宏调用时・汇編程序自动地把标号变成唯一的标号。
2、7其他
(1)替换名ALTNAME
功能:
这一伪描令用来自宦义名字.以普换源程序中原来的保留字.替換的保留字均可尊效地用于子程序中。
格式:
ALTNAME保留字自定义名
注盘:
自定义名与保留字之何首字符必须相同.
(2)附加文件的链结INCLUDE
功能:
利用此伪描令可将一个源文件插入到当前源文件中一起汇編.股终成为一个完整的源程序。
格式:
INCLUDE[驰动器名:
][路径名]文件名
注恿:
:
「文件第中若没有扩展名•则系统戏认是。
ASM(该文件必须足能打开的)。
2、疲插入的祿程用中不能包含END伪播令.否则汇編会停止运行。
菽链接文件的毎一行.在程序淸单中以"广开头・
3、链接伪描令町有8级嵌套.若要求嵌套的多.则要條改DOS中的
CONFIG.SYS文件的FILES#数。
3宏汇編运行
3、1系统运行环境
ASM-51宏汇編要在IBM-PC及其兼容机I:
运行(至少128K字节的RAM)。
具有一个软驱动器或唤驱动器.采川ANSI标
准终端(包括键盘.显示控制器.打印机.至少一个RS-232异步通讯接口).软件有PC-DOS.MS-DOS2。
0以上版本.A
SM.51系统。
3、2宏汇编程序的运行
以8051宏汇編为例.在DOS系统的挠示符卜•键入
A>ASM51文件名。
ASM
等错谋的个数出现后•这入变返回到DOS提示符卜I8051的宏汇編与此相似。
4汇編的使用
使用ASM-51宏汇编足将8051源程将汇编生成列表输出文件和目标代码文件•供模拟/调试时使用.我们使用的宏汇编完全采用Inte「标准助记符和行格式.因此在綁写漁程序时.町以使用宏汇编中的伪描令.以增加谏程序的运行速度和町读性。
也町以宜接用Inter标准助记符來編写源程序.再经过ASM・51宏汇編进行汇編•便吋得到列浪输出文件和目标代码文件.
汇編的格式如卜I
>ASM51文件几ASM[诃选项]
其中可选项为:
/L・/H./S./P./N
/L表示源程序汇编后不生成列农册输岀文件(.LST).只显示在屏幕匕
/H茨示源程序汇编后不生成目标代码文fl(.HEX).
/S茨示源程序汇編后不生成符号表。
/P液示源程序汇編后生成符号表。
/N茨示源程序汇褊后.程序足连续的见示。
如果没冇选择项.則表示产生列茨输出文件和目标代码文件.且在LST文件后面列岀符号茨.生成的目标代码便吋以进行枳拟/调试.如果在模ftV调试中发现错谋.则源程庠要经过修改.車新汇编.然后再进行模拟/诡试.宜到完全正确。
若程序汇编过程中有错罠则给出出错信息(岀钳信息见附录人生成的目标代码对以进行模拟/调试/烧写。
附录ASM-51汇編出锚信思茨
1AddressOutofRange一个被计值的目标地址趙出了当啊语句的范1也
2BadlyFormedArgument数字规定的类型中冇非法数字存在.
3IllefalEquale冇不允许的类型约定•
4LabelNameConflictsWithSymbolName在祝序中有两个符号相同。
5LabelAddressChangedOnPass2.源程序在此错之前.还有一些餡误.
6MissingArgumentinExpression表达式中貝术远只符后面没冇操作数。
7MissingENDStatrment汇编的源程序结尾未发现END语句。
8MultiplyDefinedLabel滋程仔中定义了两个标号.
9UnbalancedParentheses茨达式中多余或缺少括号.
10UndefinedSymbol语句中的符号名町能拼帮或未被定义.
11UnrecognizedStatemenorUndefinedArgument耒定义型数的fit令或代码。
12ValueOutofRange有一个非法的值来说明一个有若吋能值限制的语句。