51汇编伪指令详解

51汇编伪指令详解

ID:20204288

大小:97.00 KB

页数:17页

时间:2018-10-11

51汇编伪指令详解_第1页
51汇编伪指令详解_第2页
51汇编伪指令详解_第3页
51汇编伪指令详解_第4页
51汇编伪指令详解_第5页
资源描述:

《51汇编伪指令详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、51汇编伪指令伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。许多伪指令要求带参数,这在定义伪指令时由“表达式”域指出,任何数值与表达式匀可以作为参数。不同汇编程序允许的伪指令并不相同,以下所述的伪指令仅适用于MASM51系统,但一些基本的伪指令在大部份汇编程序中都能使用,当使用其它的汇编程序版本时,只要注意一下它们之间的区别就可以了。MASM51中可用的伪指令有:ORG设置程序起始地址END标志源代码结束EQU定义常数SET定义整型数DATA给

2、字节类型符号定值BYTE给字节类型符号定值WROD给字类型符号定值BIT给位地址取名ALTNAME用自定义名取代保留字DB给一块连续的存储区装载字节型数据DW给一块连续的存储区装载字型数据DS预留一个连续的存储区或装入指定字节。INCLUDE将一个源文件插入程序中TITLE列表文件中加入标题行NOLIST汇编时不产生列表文件NOCODE条件汇编时,条件为假的不产生清单一、ORG伪指令ORG用于为在它之后的程序设置地址值,它有一个参数,其格式为:ORG表达式表达式可以是一个具体的数值,也可以包含变量名,如果包含变量名,

3、则必须保证,当第一次遇到这条伪指令时,其中的变量必须已有定义(已有具体的数值),否则,无定义的值将由0替换,这将会造成错误。在列表文件中,由ORG定义的指令地址会被打印出来。ORG指令有什么用途呢?指令被翻译成机器码后,将被存入系统的ROM中,一般情况下,机器码总是一个接一个地放在存储器中,但有一些代码,其位置有特殊要求,典型的是五个中断入口,它们必须被放在0003H,000BH,0013H,001BH和0023H的位置,否则就会出错,如果我们编程时不作特殊处理,让机器代码一个接一个地生成,不能保证这些代码正好处于这

4、些规定的位置,执行就会出错,这时就要用到ORG伪指令了。看如下例子:例:INT_0EQU1000HTIME_0EQU1010HINT_1EQU1020HTIME_1EQU1030HSERIALEQU1040HAJMPSTART;跳转到主程序起始点LJMPINT_0;外中断0处理程序LJMPTIME_0;定时中断0处理程序LJMPINT_1;外中断1处理程序LJMPTIME_1;定时中断1处理程序LJMPSERIAL;串行口中断程序START:NOPEND上面的程序经汇编后列表文件如下:TheCyberneticMic

5、roSystems8051FamilyAssembler,Version3.03Page108-26-96 1000=INT_0EQU1000H1010=TIME_0EQU1010H1020=INT_1EQU1020H1030=TIME_1EQU1030H1040=SERIALEQU1040H00000111AJMPSTART;跳转到主程序起始点0002021000LJMPINT_0;外中断0处理程序0005021010LJMPTIME_0;定时中断0处理程序0008021020LJMPINT_1;外中断1处理程序0

6、00B021030LJMPTIME_1;定时中断1处理程序000E021040LJMPSERIAL;串行口中断程序START:001100NOP0000ENDTheCyberneticMicroSystems8051FamilyAssembler,Version3.03Page208-26-96;%TSymbolNameTypeValueINT_0.............I1000INT_1.............I1020SERIAL.............I1040START.............L00

7、11TIME_0.............I1010TIME_1.............I1030;%Z00Errors(0000)由列表文件,可以绘出代码在ROM中的映象图如下:代码01H11H02H10H00H02H10H10H02H10H20H地址00H01H02H03H04H05H06H07H08H09H0AH代码02H10H30H02H10H40H00H    地址0BH0CH0DH0EH0FH10H11H12H13H14H15由上面的映象图可知,在03H处的代码为10H,而不是我们要的02H,所以外断程

8、序INT_0不能被正确执行,其它各中断程序的情况同样如此,如在0BH处,本来存放的应当是定时器0中断程序,但按上述的映象图,0BH处开始的3个代码是:02H,10H,30H,这是定时器1的入口地址,所以,如果定时器0发生中断,所执行的其实是定时器1的中断程序,这当然不对。例2:INT_0EQU1000HTIME_0EQU1010HINT_1EQ

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。