如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第4章汇编语言程序设计教学目标4.1单片机汇编语言概述机器语言汇编语言地址汇编程序高级语言独立于机器,可移植性强结构化设计,程序清晰,但是占用存储空间大指令性语句使CPU执行一个具体的操作。伪指令不要求计算机做任何操作,也没有对应的机器码,不产生目标程序,不影响程序的执行,仅仅是能够帮助进行汇编的一些指令。11用来指定程序或数据的起始位置;给出一些连续存放数据的地址;为中间运算结果保留一部分存储空间;为源程序中的符号和标号赋值;表示源程序结束等等。不同版本的汇编语言,伪指令的符号和含义可能有所不同,但基本用法是相似的。伪指令列表141516书:131页。编程好习惯之一:上下对齐!ORG0500HAAEQUR1BBEQU10HDELAYEQU07E6HMOVR0,BB;R0←(10H)MOVA,AA;A←R1·······················LCALLDELAY;调07E6H子程序该伪指令的功能与EQU类似,可以将DATA右边表达式的值赋给左边的字符名称。表达式可以是常数、地址标号或表达式,但不可以是一个汇编符号(如R1等)。19ORG2000HTAB1:DB30H,8AH,73DB01011010B,‘5’,‘A’21ORG1500HTAB2:DW1234H,80H,1023ORG1000HSPC:DS20HDB30H,8FH254.2源程序的设计步骤和汇编27284.2源程序的设计步骤和汇编4.2源程序的设计步骤和汇编4.3.1简单程序设计4.3.2分支程序设计4.3.3散转程序设计4.3.4循环程序设计4.3.5查表程序设计4.3.6子程序设计和参数传递LJMPMAIN例1两个无符号双字节数相加。设被加数存放于内部RAM的40H(高位字节),41H(低位字节),加数存放于50H(高位字节),51H(低位字节),和数存入40H和41H单元中。ORG0000HLJMPMAINORG0100HMAIN:CLRC;将Cy清零MOVR0,#41H;将被加数地址送数据指针R0MOVR1,#51H;将加数地址送数据指针R1AD1:MOVA,@R0;被加数低字节的内容送入AADDA,@R1;两个低字节相加MOV@R0,A;低字节的和存入被加数低字节中DECR0;指向被加数高位字节DECR1;指向加数高位字节MOVA,@R0;被加数高位字节送入AADDCA,@R1;两个高位字节带Cy相加MOV@R0,A;高位字节的和送被加数高位字节SJMP$END例2将两个半字节数合并成一个一字节数。设内部RAM40H,41H单元中分别存放着8位二进制数,要求取出两个单元中的低半字节,并成一个字节后,存入50H单元中(从40H单元取的数放在高4位,从41H单元取的数放在低4位)。ORG0000HLJMPSTARTORG0100HSTART:MOVR1,#40H;设置R1为数据指针MOVA,@R1;取出第一个单元中的内容ANLA,#0FH;取第一个数的低半字节SWAPA;移至高半字节INCR1;修改数据指针XCHA,@R1;取第二个单元中的内容ANLA,#0FH;取第二个数的低半字节ORLA,@R1;拼字MOV50H,A;存放结果SJMP$END分支结构框图(a)单分支流程(b)多分支流程-ORG2000HSTART:MOVA,30H;A←XJZLP2;X=0转移JNBACC.7,LP1;X>0转移MOVA,#0FFH;X<0则Y=-1SJMPLP2LP1:MOVA,#01;X>0则Y=1LP2:MOV31H,A;31H←YEND散转程序是分支程序的一种,它可根据运算结果或输入数据将程序转入不同的分支。4.3.3散转程序设计ORG0100HMOVA,R3;R3→ARLA;A←A×2MOVDPTR,#TAB;表首地址送DPTRJMP@A+DPTR;根据A值转移··········TAB:AJMPROUT00;当(R3)=0时转ROUT00执行AJMPROUT01;当(R3)=1时转ROUT01执行··········AJMPROUT127;当(R3)=127时转ROUT127执行ROUT00:········ROUT01:··················ROUT127:········END4.3.4循环程序设计4.3.3循环程序设计例工作单元清零。在应用系统程序设计时,有时经常需要将存储器中部分地址单元作为工作单元,存放程序执行的中间值或执行结果,工作单元清零工作常常放