微控制器原理及应用第7章 MCS-51单片机的指令与程序设计.ppt

微控制器原理及应用第7章 MCS-51单片机的指令与程序设计.ppt

三、EQU伪指令 功能:将某个特殊数据或某个存储单元赋予一个符号名称 格式:符号EQU数据或汇编符 伪指令EQU将其右边的“数据或汇编符”用左边的符号名称命名,或者说用EQU指令可以给符号名称赋值。符号名称必须先赋值后使用,符号名称被赋值后,在程序中可以作为一个8位或16位的数据、地址或汇编符使用。EQU伪指令要放在源程序的前面。 例如: Addr EQU 01FAH Samp EQU 37H RG1 EQU R5 ORG 0000H JMP MAIN MAIN: MOV DPTR, # Addr; DPTR =01FAH MOV A, # Samp; A =37H MOV RG1, #59H; RG1 = R5 =59H MOV A, RG1; A =59H END 上述程序段中,Addr EQU 01FAH将数据01FAH赋予字符名称Addr;RG1 EQU R5 将工作寄存器R5赋予字符名称RG1 。 四、DATA指令 功能:将一个8位或16位的数据或地址单元赋予一个符号名称 格式:符号DATA表达式 数据/地址赋值伪指令DATA的功能与EQU类似,是将其右边“表达式”的值赋给左边的符号名称。“表达式”可以是一个8位或16位的数据或地址,也可以是已定义的符号名称,但不可以是一个汇编符号(如Rn等) 。 DATA伪指令定义的字符名称,不必先定义后使用。DATA伪指令可以用在源程序的开头或末尾。 例如:InitData DATA 29H;表示用InitData代表29H 五、DB指令 功能:从指定的地址单元开始,依次存放若干个8位格式的(字节)数据。 格式:[标号: ]DB8位数据表达式 例如: ORG 0200H TAB: DB 14, 25H, ’MY’, ’3’ 以上指令经汇编后,将对0200H开始的若干内存单元进行如下赋值:(0200H)=0EH,(0201H)=25H,(0202H)=4dH(M的ASCII码),(0203H)=59H(Y的ASCII码),(0204H)=33H(3的ASCII码) 。 六、DW指令 功能:从指定的地址单元开始,依次存放若干个16位格式的数据(字数据)。16位数据的高8位存入低地址,低8位存入高地址;不足16位的数据高位用0填充。 格式:[标号: ]DW16位数据表达式 7.3.2 MCS-51汇编语言程序的基本结构 MCS-51汇编程序基本结构与8086汇编程序相似,常用的结构有:顺序结构、分支结构、循环结构、子程序和中断服务程序。 一、顺序结构 顺序结构程序是一种最简单、最基本的程序。它是一种无分支的直线形程序,按照程序编写的顺序依次执行。 【例7.5】编写程序实现将片内RAM的70H、71H地址中的内容相加后,结果送片内RAM的72H地址和进位C中。 SUM1: CLR C MOV R1, #70H MOV A, @R1 INC R1 ADD A, @R1 INC R1 MOV @R1, A RET END 二、分支程序设计 分支程序的特点是改变程序的执行顺序,跳过一些指令,去执行另外一些指令。每一个分支都要单独编写一段程序,每一个分支的开始地址应该赋给一个确定的标号。 在MCS-51系列单片机中可以直接用来判断分支条件的指令并不多,只有累加器为零(或不为零)、比较条件转移指令CJNE等,MCS-51单片机还提供了位条件转移指令,如JC,JB等。把这些指令结合在一起使用,就可以完成各种各样的条件判断。 【例7.6】 AT89C51内部RAM的63H和64H单元中各有一无符号数,比较其大小,将大数存放于内部RAM的70H单元,小数存放于内部RAM的71H单元,如两数相等,则分别送往这2个单元。 MOV A, 63H MOV 71H, 64H CJNE A, 64H, LOOP; ((63H)!=(64H))→LOOP AJMP LARGE; (63H)=(64H) LOOP: JNC LARGE; (63H)(64H) XCH A, 71H; (63H)(64H) LARGE: MOV 70H, A SJMP $ END 三、循环程序设计 循环程序一般由4部分组成。 1.置循环初值。即设置循环过程中有关工作单元的初始值,如置循环次数、地址指针及工作单元清零等。 2.循环体。即循环的工作部分,完成主要的计算或操作任务,是重复执行的程序段。 3.循环修改。每循环一次,就要修改循环次数、数据及地址指针等。

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档