宏汇编软件的使用宏汇编软件MASM51的使用
51单片机(宏汇编)指令集5

常量及其表示
数据形式 格 式 取值范围 备注
2进制 ********B
0,1
0进制 ******
0, 1,2...9
ห้องสมุดไป่ตู้
****H 0,1...E,F
0CDE3H
符应是0--9
ASCII '**' ASCII 'AD' 使用
示例
10110011B 32768 16进制 最前面一个字
HIGH 高字节分离 ADD A,#HIGH 05E2H
LOW 低字节分离 ADD A,#LOW 77F0H
ASM51汇编器通用伪指令
汇编起始命令
ORG 16位地址 (常数或表达式 )
定义程序/数据的起始地址
ORG $+5
ORG 0008H
汇编结束命令
END
汇编到此结束,其后面的内
运算 操 作 含 义
以ADD为例
+
加操作 ADD A,#RR1+36
-
减操作 ADD A,#RR1-2EH
*
乘操作 ADD A,#RR1*0E3H
/
除操作 ADD A,#RR1/23
MOD 模除 ADD A,#RR1 MOD 12
数值运算
操 作 含 义
以ADD为例
SHR
右移 ADD A,#RR1 SHR 3
格式: 字符名称 BIT 位地址 例如: fire bit p1.0
或者: fire equ p1.0
ASM51汇编伪指令EQU/BIT
TEMP EQU 30H ;定义变量TEMP地址为30H T_MOD EQU 40H ;定义定时器模式控制字常
5-MCS-51单片机讲义(宏汇编伪指令)

第五章 MCS-51宏汇编伪指令伪指令是对汇编起某种控制作用的特殊命令,但自身并不产生机器码,不属于指令系统,而仅仅为汇编服务的一些指令,因此称为伪指令。
其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。
许多伪指令要求带参数,这在定义伪指令时由“表达式”域指出,任何数值与表达式均可以作为参数。
不同汇编程序允许的伪指令并不相同,以下所述的伪指令适用于Intel公司的MASM51系统,但一些基本的伪指令在大部份汇编程序中都能使用,当使用其它的汇编程序版本时,只要注意一下它们之间的区别就可以了。
MASM51中常用的伪指令共分为五大类:1. 程序计数与结束伪指令:ORG、END;2. 符号定义伪指令:EQU、SET、DATA、BYTE、WORD、BIT、ALTNAME、DB、DW、DS;3. 附加文件伪指令:INCLUDE;4. 程序清单格式化伪指令:TITLE、PAGE;5. 一般控制伪指令:LIST、NOLIST、NOCODE。
下面简要介绍一下各条伪指令的功能:5.1 ORG功能:程序计数伪指令,用于设置由表达式决定的初始地址,ORG也称为起始伪指令。
表达式缺省为0。
格式:ORG 16位地址例如:ORG 0100HSTART:MOV A,#05HADD A,#08HMOV 20H,AORG 0100H表示该伪指令下面第一条指令的起始地址是0100H,即“MOV A,#05H”指令的首字节地址为0100H,或标号START代表的地址为0100H。
5.2 END功能:是汇编语言源程序的结束标志。
在END以后所写的指令,汇编程序不再处理。
一个源程序只有一个END指令,放在所有指令的最后。
源程序中若没有END语句,汇编将报出错。
5.3 EQU功能:将一个数值或寄存器名赋给一个指定的符号名。
格式:符号名 EQU 表达式或符号名EQU 寄存器名符号名=表达式例如:DELY EQU 3344HDELY1 EQU 30HPP EQU R0ORG 0000HJMP MAINORG 0050HMAIN:MOV DPTR,#DELY ;(DPTR)=3344HMOV A,#DELY ;(A)=44HMOV A,#DELY1 (A)=30HMOV PP,#10 ;(PP)=10MOV A,PP ;(A)=10NOPEND5.4 SET功能:SET指令的功能与EQU指令类似,不同的是,用SET指令定义过的符号名可被重新定义。
MCS-51上机与实验

MCS-51单片机上机与实验
5
MCS-51上机一般过程
WAVE6000集成软件
编辑程序
编辑
汇编程序
汇编
调试程序
调试
手工编写 的源程序
EDIT
汇编语言 源文件(.ASM)
机器语言 目标文件(.HEX DEBUG8051 MASM51 .BIN)
烧写 (.HEX)
2013-8-4
MCS-51单片机上机与实验
6
使用WAVE6000几个应注意问题
• WAVE6000的运行方法:
– 通过项目:源程序---项目---编译---运行。 – 通过源程序直接运行:源程序---编译---运行。 – 通过目标文件:直接调入目标文件(.HEX)---打开CPU窗口--运行。
• WAVE6000安装或运行中的异常处理:
– 仿真器的设置是否到位?(会出现P0,P1…口无法编译等情 况) – 调入目标程序前,项目是否己关闭(文件---关闭)。如果没 有关闭则会出现不能编译打开的源文件的情况。 – REG窗口(内含R1,R2…等寄存器)找不到:窗口---CPU窗口。
– 原因:程序存储器中每个存储单元默认的值是FFH,即没 有写上代码机器码的单元的值都是FFH,而机器码FFH 对应的指令是MOV R7,A,所以运行没有写上代码机器 码的单元时,其实就是运行MOV R7,A指令.
• 单步与跟踪
– 单步:依次执行主程序中的每一条指令.但不跟踪函数或 过程的内部. – 跟踪:依次执行任一条指令,跟踪函数或过程的内部.
MOV A,40H SUBB A,#01H MOV 40H,A MOV A,41H SUBB A,#00H MOV 41H,A
2013-8-4
51单片机(宏汇编)指令集5

软件陷阱:
所谓软件陷阱,就是一条引导指令,强行将乱 飞的程序引向一个指定的地址,在那里有一段 专门对程序出错进行处理的程序。 如果我们把这段程序的入口标号称为ERR的话, 软件陷阱即为一条LJMP ERR指令。
赋值命令
EQU 赋值命令。定义变量地址或者常数名称。 格式: 字符名称 EQU (数或汇编符号) 赋值后的符号名称可做:数据地址\代码地址\代 码地址\立即数\寄存器名 例如: ABC EQU 30H ABC EQU R7 不能重名定义
赋值命令
DATA 数据地址赋值命令 格式: 字符名称 DATA 表达式 注意: 表达式可求值(数据) 可以后定义先使用 ABC DATA 30H ABC DATA 30+20 不能重名定义
单片Байду номын сангаас原理及应用5
51单片机宏汇编和程序结构
51单片机的汇编语言(宏汇编)
只有指令助记符还不能编写出好程序,需要增 添一些“伪指令”。 伪指令用于控制汇编软件如何处理和按什么规 则编译程序。 伪指令不会产生“机器码” 不同的汇编器(仿真器、仿真软件)具有一些 不同的“伪指令”规定。 下面将介绍一些常用的伪指令
数值运算
汇编语言对常量允许进行算术运算,逻辑运算,分离 运算等三种类型的运算。 运 算 操 作 含 义 以ADD为例 + 加操作 ADD A,#RR1+36 减操作 ADD A,#RR1-2EH * 乘操作 ADD A,#RR1*0E3H / 除操作 ADD A,#RR1/23 MOD 模除 ADD A,#RR1 MOD 12
ASM51宏汇编使用手册

ASM51宏汇编使用手册2007-01-21 10:33ASM-51 宏汇编使用手册ASM-51 宏汇编主要用来开发Inter8051系列单片机,它具有宏处理,数据处理,列表处理和条件处理等多种功能。
源程序的编写完全采用 Inter标准助记符和行格式。
在编写程序过程中,可借助于文本编辑(Windows的记事本)或文字处理软件Word等编辑,经ASM-51汇编后生成列表输出文件(.LST)和目标代码文件(.HEX)。
此目标代码文件(.HEX)可直接用CZS-51或MedWin、Keil、Debug8051进行模拟/调试,或直接用于硬件仿真器上运行。
当然,这也是要烧写到单片机ROM中的代码。
1、宏汇编语言的基本语法1、1 宏汇编的特点ASM-51宏汇编完全支持Inter助记符的汇编语言,它含有宏语句,英文大小写字母,变量名,标号等不受限制,有二,十,十六进制和串参数类型,有汇编控制指令和多层条件语句,程序逻辑分段,还有模块化程序设计的连接功能,汇编速度快等特点。
1、2 汇编处理过程(1) 用行编辑EDLIN或文字处理软件WS或全屏幕编辑软件PE等,编辑宏汇编语言源程序,它的文件扩展名为。
ASM。
(2) 用ASM-51宏汇编程序对上述源程序文件进行汇编,产生扩展名为.LST的列表输出文件和扩展名为.HEX的目标代码文件(.HEX)。
列表输出文件包含源程序语句所汇编成的代码,以及有关的地址,语句和符号表等。
目标代码文件包含源程序语句所汇编成的代码,不包含任何符号信息或助记符。
进行模拟/调试,或直接用于硬件仿真器上运行。
1、3 语句汇编语言可分为两类语句:指令性语句和指示性语句。
(1)指令性语句这一类语句是指在汇编过程中能生成指令代码的语句(如 MOV ,DEC等)。
其格式为:[标号:] [指令助记符] [操作数] [;注释]其中方括号[ ]中为选择项。
下同。
(2)指示性语句这一类语句即通常所说的伪指令,它指示汇编程序后面的指示性语句如何产生代码。
宏汇编软件的使用宏汇编软件MASM51的使用

宏汇编软件的使用宏汇编软件MASM51的使用第一节概述单片机开发可以用手工汇编和机器汇编两种方法。
采用手工汇编就是先编写出汇编程序,然后对照单片机汇编表手工将汇编程序翻译成机器码,最后将机器码一个一个地送入开发仿真器的RAM中去进行调试。
由于采用手工汇编的机器码是相对于存储器的绝对地址进行定位的,因此在调试时,若要在程序中增加或删除一条指令,就会造成指令的绝对地址发生变化。
这样除修改那条指令外,几乎所有转移、调用指令的操作数都要作相应的修改,稍有疏忽程序就会出错。
而采用机器汇编,在很大程度上可以避免上述麻烦。
只要通过键盘输入源程序后,其余作工作都由计算机来进行,即查出相应的机器码,对地址进行定位,建立能被开发装置接收的机器码文件、建立能打印出清单的列表文件等等。
机器码不需要再一个一个地从仿真器的键盘上键入,只要从PC机的通讯口直接传送到开发装置中去。
因此使用机器汇编大大提高了单片机开发的速度。
源程序被输入到机器中后,以一个文件的形式保存起来,然后就可以对这个文件进行处理了,要对这个文件进行汇编,必须有相应的汇编程序。
在PC机上进行汇编的程序有多种,以下介绍的MASM51软件就是其中的一种,它的主要特点有:1.对用户编写的源程序格式要求不太严格,例如,英文字母的大、小写不受限制,变量名或标号名没有长度限制,对源程序中的空格数也没有严格的要求等等。
这些给用户编写程序带来很大的方便。
2.具有较强的功能,例如支持宏语句,使同一程序中类似的程序结构,只要输入一次,在使用时可用宏语句调用。
此外还允许用条件汇编语句以及完善的伪指令系统等。
减少了编写、输入源程序的工作量。
3.不管用户的源程序有多少错误,它都能全部汇编完,并能形成列表文件及目标文件,以供用户修改错误。
4.可以接收汉字注释,并能完整的将汉字注释复制到列表文件,而其它一些汇编软件则不能处理汉字,或会使列表文件中的汉字注释混乱。
运行MASM51软件的条件很低,现在的PC机都能达到。
ASM51伪指令

ASM51宏汇编本文给出了ASM5l宏汇编伪指令的简要说明及SUPER系列仿真器调试ASM51程序时有关的汇编控制项,目的是使用户快速地掌握宏汇编语言ASM51的一般方法,更复杂的用法请参阅有关汇编语言的手册。
1.1 ASM51基本成份·字符集:ASCII字符集·数字:二进制数,后缀为B八进制数,后缀为O或Q十进制数,后缀为D或无后缀十六进制数,后缀为H·符号:第一字符必须是字母‘?’或‘—’,最多31个字符·定位计数器:用$表示当前定位计数器的值·字符串:字符串必须是用单引号(’)括起来的可打印的ASCII字符序列串长度控制在0—255之内,字符串可用DB伪指令初始化。
1.2表达式和基本操作数1.2.1表达式表达式用于定义常数,表达式有三种属性:1.类型——表达式所属段的类型。
2.可重定位性——表达式分为绝对的表达式和可重定位的表达式。
绝对的表达式的值在汇编期间计算,而可重定位的表达式的值在连接定位期间计算。
绝对的表达式可出现在程序的任意位置。
唯一合法的可重定位表达式是一个可重定位的符号或一个可重定位的符号加上一个常数。
3.值——表达式的值以十六位二进制的补码形式表示。
表示式值或在汇编期间计算或在连接定位期间计算。
·1.2.2基本操作数ASM51有以下五种基本操作数:1.符号——符号用来表示地址和常数2.数字——数字可用二、八、十或十六进制表示3.$——表示定位计数器的当前值4.STACK——预定义的变量STACK表示栈底5.串——只有一或二个字符的串可用作操作数,一个字符的串被认为是值等于其ASCII码的字节常数,二个字符的串被认为是字常数。
1.2.3地址空间8051的地址空间有五种:·可被直接寻址的数据地址空间(DATA)·位地址空间(BIT)·外部的数据地址空间(XDA TA)·程序地址空间(CODE)·可间接寻址的数据空间(1DATA)在某些情况下,同一个数值对全部五种地址空间都是有效的地址。
第3章 MCS-51型单片机指令系统和汇编语言程序设计

4.位操作类指令 12 条
它分为位传送、置位、清零及位逻辑指令。 5.控制转移类指令 22 条
它分为无条件转移、条件转移、比较转移、循环转移及子程序调用和返回指令。
表 3-1 寻址方式与相应的存储器空间
存储器空间 程序存储器 ROM 片内 RAM 低 128 字节、专用寄存器 SFR 和片内 RAM 可位寻址的单元 20H~2FH 工作寄存器 R0~R7、A、B、Cy、DPTR、A、B 片内 RAM 低 128 字节(@R0、@R1、SP)、片外 RAM(@R0、@R1、@DPTR) 程序存储器(@A+PC、@A+DPTR) 程序存储器 256 字节范围(PC+偏移量) 片内 RAM 20H~2FH 字节地址中的所有位和 SFR 中字节地址能被 8 整除单元的位
MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data
;A←Rn ;A←(direct) ;A←(Ri) ;A←data
【例 3-1】 指出下列各条指令的含义。 (1) MOV A,R0 ;将寄存器 R0 中的数据传送至 A 中,即完成 A←R0。R0 中的 ;内容不变 (2) MOV A,30H ;将直接地址 30H 单元中的数据传送至 A 中,即完成 A←(30H) ;若(30H)=37H,则执行指令 MOV A,30H 后,A=37H (3) MOV A,@R1 ;将 R1 中的数据作为地址,将这个地址中的数据送至累加器 A 中 ;若 R1=30H,(30H)=18H,则执行指令 MOV A,@R1 后,A=18H (4) MOV A,#40H ;将立即数 40H 送至累加器 A 中,即执行该指令后,A=40H (2) 以 Rn 为目的字节的传送指令(3 条)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宏汇编软件的使用宏汇编软件MASM51的使用
第一节概述
单片机开发可以用手工汇编和机器汇编两种方法。
采用手工汇编就是先编写出汇编程序,然后对照单片机汇编表手工将汇编程序翻译成机器码,最后将机器码一个一个地送入开发仿真器的RAM中去进行调试。
由于采用手工汇编的机器码是相对于存储器的绝对地址进行定位的,因此在调试时,若要在程序中增加或删除一条指令,就会造成指令的绝对地址发生变化。
这样除修改那条指令外,几乎所有转移、调用指令的操作数都要作相应的修改,稍有疏忽程序就会出错。
而采用机器汇编,在很大程度上可以避免上述麻烦。
只要通过键盘输入源程序后,其余作工作都由计算机来进行,即查出相应的机器码,对地址进行定位,建立能被开发装置接收的机器码文件、建立能打印出清单的列表文件等等。
机器码不需要再一个一个地从仿真器的键盘上键入,只要从PC机的通讯口直接传送到开发装置中去。
因此使用机器汇编大大提高了单片机开发的速度。
源程序被输入到机器中后,以一个文件的形式保存起来,然后就可以对这个文件进行处理了,要对这个文件进行汇编,必须有相应的汇编程序。
在PC机上进行汇编的程序有多种,以下介绍的MASM51软件就是其中的一种,它的主要特点有:
1.对用户编写的源程序格式要求不太严格,例如,英文字母的大、小写不受限制,变量名或标号名没有长度限制,对源程序中的空格数也没有严格的要求等等。
这些给用户编写程序带来很大的方便。
2.具有较强的功能,例如支持宏语句,使同一程序中类似的程序结构,只要输入一次,在使用时可用宏语句调用。
此外还允许用条件汇编语句以及完善的伪指令系统等。
减少了编写、输入源程序的工作量。
3.不管用户的源程序有多少错误,它都能全部汇编完,并能形成列表文件及目标文件,以供用户修改错误。
4.可以接收汉字注释,并能完整的将汉字注释复制到列表文件,而其它一些汇编软件则不能处理汉字,或会使列表文件中的汉字注释混乱。
运行MASM51软件的条件很低,现在的PC机都能达到。
第二节如何启动MASM51宏汇编程序
一、启动和退出
MASM51软件有两个文件:MASM51.EXE和MASM51.OVL,只要将这两个文件拷入硬盘的一个目录中(如MASM51)中,然后在DOS命令行中打入:
MASM51(回车)
即在显示器上显示如下信息:
The Cybernetic Micro Systems
CYS-8051 Software Package
Version 3.03`
for the IBM Personal Computer
(C)Copy right Cybrenetic MIcro Systems,Inc 1983,1984,1985, 1986
High Level Language Commands
ASM51[file] P8751 file P8744 file//
P27XX file COMP[file] READ[kbytes] DISP[start,num]
INITIALIZE CLEAR LIST EXIT
RUN[file] GOTO Label STOP CONT
DIR[spec] TYPE file DOS cmd HELP
PRINT arglist EQU = WARBLE
DELAY[secs] CLS HLSEARCH flag BEEP
OFFSET pc[,loc] PROM type SECURE SA VE file[,start,num]
LOAD file EDBYTE pc PVOLT value PSETUP num,value
>
信息的出现说明已进入MASM51宏汇编程序,在屏幕下方出现的符号‘〉’是宏汇编程序提示符,它的出现告诉用户,宏汇编程序处于接收命令状态。
虽然屏幕上提供了很多的命令,但大部份命令要在相应的硬件配合下才能实现。
当用来汇编源程序时,使用的主要命令是:
ASM51 盘号:文件名〈回车〉进行汇编
DIR 盘号:文件名〈回车〉显示目录
EXIT 〈回车〉退出宏汇编
二、进行汇编
用户在使用宏汇编程序之前,应该已使用编缉器(如EDIT、CCED等)编好了8051汇编语言的源程序,并已作为一个文件存盘,该文件一般以.ASM为扩展名。
进入MASM51后,键入
ASM51 [d:filename[.asm] [选项]
如果省略扩展名,则系统默认为.asm,如果不以.asm为扩展名,则应键入文件的全名。
汇编后,将产生两个输出文件:一个是16进制代码文件,以.hex为扩展名,另一个是列表文件,以.lst为扩展名,文件名与输入文件的文件名相同。
在汇编时,可以加入一些选项进行控制,可加的选项如下:
1./L选项:只在屏幕上显示列表文件的内容,不生成列表文件。
2./H选项:汇编后不在磁盘上产生.hex文件。
3./S选项:产生的列表文件中将不包括符号表。
4./P选项:汇编程序序所生成的符号表将成为能被其他源程序引用的永久符号表的一部份,即如果不退出宏汇编,该符号表将保留在内存中,在汇编其它源程序时可以引用它们,以便连接几个源文件。
5./N选项:使生成的列表文件在打印(或显示)时不分页。
不加'/N'则每隔55行源代码生成一个新页头。
一般情况下,我们不需要在命令后面加任何选项。
如下面所示:
ASM51 Filename[.asm] [回车]即可。