预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共45页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第3章MCS-51单片机汇编语言程序设计内容提要3.1概述连接/定位器 L51目前很多公司将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如WAVE、 KEIL,WAVE集成软件的使用见附录。汇编的方法:汇编的方法有两种 1.手工汇编: 人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。 2.机器汇编: 用计算机中的汇编程序对用户源程序进行汇编。 用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定。这些由伪指令指定。1)确定程序中每条汇编语言指令的指令机器码 2)确定每条指令在存储器中的存放地址 3)提供错误信息 4)提供目标执行文件(*.OBJ/*.HEX)和列表文件(*.LST)1.机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。 2.伪指令:汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息。宏定义过程:二.伪指令常用伪指令及功能:2.字节定义标号:DB(字节常数,或字符或表达式) 功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。 例如LN:DB32,’C’,25H,-1;LN~LN+2地址单元依次存放20H,43H,25H,FFH5.等值指令标号EQU(数值表达式)表示EQU两边的量等值,用于为标号或标识符赋值。例如:X1 EQU2000HX2 EQU0FH … MAIN:MOVDPTR,#X1;DPTR=2000H ADDA,#X2;A=A+0FH6.位定义标号BIT[位地址] 作用:同EQU指令,不过定义的是位操作地址。 例如AICBITP1.1。 汇编语言程序设计步骤顺序程序设计 例3-1编程将外部数据存储器的000EH和000FH单元的内容相换。ORG0000H MOVP2,#0H;送地址高八位至P2口 MOVR0,#0EH;R0=0EH MOVR1,#0FH;R1=OFH MOVXA,@R0;A=(000EH) MOV20H,A;(20H)=(000EH) MOVXA,@R1;A=(000FH) XCHA,20H;A=(000EH),(20H)=(000FH) MOVX@R1,A MOVA,20H MOVX@R0,A;交换后的数送各单元 SJMP$ END 3.3顺序程序设计 顺序程序(简单程序),程序走向只有一条路径例3-3分解压缩式BCD码,使其成为非压缩式BCD码。地址 ORG0000H MOVA,R2 JNBACC.7,N;为正数? CPLA ;负数变补 INCA MOVR2,A N:SJMP$ ;结束例2用单片机加重力传感器作磅秤,秤出重量后算出行李运费价格,其秤出的重量以10kg为1个计价单位G,G已存入40H单元。计价方法为50kg以内按3元,50kg以上分段计价:50kg按3元计价,超过部分按2元计价。由此列出算式:ORG0100H FRT:MOVA,40H ;取行李重量计价单位G MOVR3,A MOVB,#03H ;运费M=G×3 MULAB MOVR2,A ;暂存3G多分支散转程序的设计 有一类分支程序,它根据不同的输入条件或不同的运算结果,转向不同的处理程序,称之为散转程序。这类程序通常利用JMP@A+DPTR间接转移指令实现转移。有如下两种设计方法: 1.查转移地址表: 将转移地址列成表格,将表格的内容作转移的目标地址。 2.查转移指令表: 将转移到不同程序的转移指令列成表格,判断条件后查表,转到表中指令执行,下面用两个例子说明。1.利用转移地址表实现转移 例3-7根据R3的内容转向对应的程序,R3的内容为0~n,处理程序的入口符号地址分别为PR0~PRn(n<128)。 分析:将PR0—PRn入口地址列在表格中,每一项占两个单元,PRn在表中的偏移量为2n,因此将R3的内容乘2即得PRn在表中的偏移地址,从偏移地址2n和2n+1两个单元分别取出PRn的高八位地址和低八位地址送DPTR寄存器,用JMP@A+DPTR指令(A先清零)即转移到PRn入口执行。ORG0000H MOVA,R3;R3→A ADDA,ACC;A*2 MOVDPTR,#TAB PUSHACC MOVCA,@A+DPTR;取地址表中高字节 MOVB,A;暂存于B INCDPL POPACC MOVCA,@A+DPTR;取地址表中低字节 MOVDPL,A MOVDPH,B;DPTR为表中地址 CLRA;A=0 JMP@A+DPTR;转移 TAB:DWPR0,PR1,PR2,…..,PRn;转移地址表 END2.利用转移指令表实现转移 例3-8设有五个按键0、1、2、3、4