C单片机汇编语言程序设计新解读实用.pptx
《C单片机汇编语言程序设计新解读实用.pptx》由会员分享,可在线阅读,更多相关《C单片机汇编语言程序设计新解读实用.pptx(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、教学内容及要求教学内容汇编语言程序的基本结构形式、子程序结构形式80C51单片机汇编语言伪指令80C51单片机汇编语言程序设计举例教学要求掌握顺序结构程序、分支程序、循环程序和子程序等结构程序的设计等熟悉单片机汇编程序常用的伪指令了解汇编语言程序的格式1第1页/共44页汇编语言源程序的编辑和汇编2第2页/共44页机器编辑交叉汇编串行传送3 3地址地址地址地址机器码机器码机器码机器码标号标号标号标号助记符指令助记符指令助记符指令助记符指令80008000800080007820782078207820SORT:SORT:SORT:SORT:MOV R0,#20HMOV R0,#20HMOV R0
2、,#20HMOV R0,#20H80028002800280027F077F077F077F07MOV R7,#07HMOV R7,#07HMOV R7,#07HMOV R7,#07H*.ASM第3页/共44页编辑、汇编编辑:编写程序的过程称为编辑。机器编辑指借助于微型机进行单片机的程序设计,通常都是使用编辑软件进行源程序的编辑。编辑完成后,生成一个由汇编指令和伪指令构成的扩展名为”.ASM”的ASCII码文件。汇编:汇编语言源程序不能在单片机中直接执行,必须将其“翻译”为用二进制代码(机器语言)表示的目标程序才能执行。这个“翻译”过程称为汇编。机器汇编指由计算机通过汇编程序完成从汇编语言源程
3、序到机器语言目标程序的“翻译”工作。交叉汇编指使用一种计算机(PC)的汇编程序为另一种计算机(单片机)的源程序进行汇编即运行汇编程序进行汇编的是一种计算机,而汇编得到的目标程序是另一种计算机用的。4 4第4页/共44页80C51单片机汇编语言伪指令汇编时,源程序须向汇编程序发出一些指示信息,协助完成汇编工作,这一工作是由伪指令来完成的。汇编起始地址命令ORG(Origin)定义字节命令DB(Define Byte)定义数据字命令DW(Define Word)预留存储区命令DS(Define Storage)位定义命令BIT赋值命令EQU(Equate)数据地址赋值伪指令DATA汇编终止命令EN
4、D(End of assembly)注意!伪指令仅供汇编程序将源程序翻译成目标程序,本身并不形成机器码。5 5第5页/共44页汇编起始地址命令ORG(Origin)规定程序或数据的起始存放地址。出现在每段源程序或数据块的开始项是16位绝对地址,或者标号,或者表达式。在一个汇编语言源程序中允许使用多条定位伪指令,但其值应从小到大,并与前面的存放地址不重叠。如果程序的开始不放ORG,则汇编程序将从0000H单元开始放目标程序代码。ORG ORG ORG ORG 6 6ORG 0000HORG 0000HORG 0000HORG 0000H;从从0000H0000H0000H0000H单元开始存放下
5、面的指令单元开始存放下面的指令LJMP 0030HLJMP 0030HLJMP 0030HLJMP 0030HORG 0030HORG 0030HORG 0030HORG 0030H;从从0030H0030H0030H0030H单元开始存放下面的指令单元开始存放下面的指令MAIN:MAIN:MAIN:MAIN:MOV SP,#50HMOV SP,#50HMOV SP,#50HMOV SP,#50HORG 0040HORG 0040HORG 0040HORG 0040H;从从0040H0040H0040H0040H单元开始存放下面的数据单元开始存放下面的数据TABTABTABTAB:DB 23,
6、89DB 23,89DB 23,89DB 23,89第6页/共44页定义字节命令DB(Define Byte)在程序存储器中定义字节数据。Xn可以是一字节常数;用双引号或者单引号括起来的字符或字符串;各个数之间用逗号隔开。DBDBDBDBX1,X2,X1,X2,X1,X2,Xn,Xn,Xn7 7ORG 1000HORG 1000HA1:DB 01001010B,23A1:DB 01001010B,23o o,23,78H,23,78H,A2:DB A2:DB 5 5,”12AB12AB”,12D,-2,12D,-2(1000H)=01001010B=4AH,(1000H)=01001010B=
7、4AH,(1001H)=23(1001H)=23o o=13H=13H,(1002H)=23=17H,(1002H)=23=17H,(1003H)=78H,(1003H)=78H,(1004H)=35H(5(1004H)=35H(5的ASCIIASCII码),),(1005H)=31H(1(1005H)=31H(1的ASCIIASCII码),(1006H)=32H(2(1006H)=32H(2的ASCIIASCII码),),(1007H)=41H(A(1007H)=41H(A的ASCIIASCII码),(1008H)=42H(B(1008H)=42H(B的ASCIIASCII码),),(100
8、9H)=12D=0CH(1009H)=12D=0CH(100AH)=-2=0FEH(100AH)=-2=0FEH【例】第7页/共44页定义数据字命令DW(DefineWord)在程序存储器中定义16位的数据字。存放时,数据字的高8位在低地址,低8位在后高地址。通常,DB用来定义数据,DW用来定义地址。DWDWY1,Y2,YnDW DW DW DW“AAAAAAAA”;存入存入41H41H41H41H,41H41H41H41HDW DW DW DW“A A A A”;存入存入00H00H00H00H,41H41H41H41HDW DW DW DW“ABCABCABCABC”;不合法,因为超过了两
9、个字节不合法,因为超过了两个字节DW 100H,1ACH,-804DW 100H,1ACH,-804DW 100H,1ACH,-804DW 100H,1ACH,-804;按顺序存入按顺序存入01H01H01H01H、00H00H00H00H、01H01H01H01H、0ACH0ACH0ACH0ACH、0FCH0FCH0FCH0FCH、0DCH0DCH0DCH0DCH8 8【例】第8页/共44页预留存储区命令DS(Define Storage)在程序存储器中保留指定数目的单元作为预留存储区,供程序运行使用。【例】ADDRTAB:DS 20ADDRTAB:DS 20;从标号ADDRTABADDRT
10、AB代表的地址开始,预留2020个;连续的地址单元。DS DS DBDB、DWDW、DSDS只能对于程序存储器使用9 9第9页/共44页位定义命令BIT把位地址赋给字符名称。【例例】:AQ BIT P1.0AQ BIT P1.0AQ BIT P1.0AQ BIT P1.0;把把P1.0P1.0P1.0P1.0的位地址赋给字符名的位地址赋给字符名AQAQAQAQ,在其后,在其后;的编程中的编程中AQAQAQAQ可以作为位地址使用。可以作为位地址使用。BIT BIT 1010第10页/共44页赋值命令 EQU(Equate)给数或符号赋给字符可以是常数、地址、标号或表达式。赋值以后的字符既可以作地
11、址使用,也可以作立即数使用。【例】CS EQU 0FFFFHCS EQU 0FFFFHA1 EQU R1A1 EQU R1A2 EQU 10H A2 EQU 10H DELAY EQU 0708HDELAY EQU 0708HA1A1A1A1可作为寄存器可作为寄存器R1R1R1R1来使用,来使用,A2A2A2A2可作为可作为8 8 8 8位直接地址或立即数使用,位直接地址或立即数使用,DELAYDELAYDELAYDELAY可作为可作为16161616位地址或者立即数使用。位地址或者立即数使用。字符名字符名 EQU EQU EQU EQU 数或汇编符号数或汇编符号1111第11页/共44页数据
12、地址赋值伪指令DATA将表达式的值赋给字符。表达式可以是一个数据或地址,也可以是一个包含所定义字符名在内的表达式,但不能是一个汇编符号(如R0R7)。与EQU的区别:EQU必须先定义后使用。DATA无此限制,所以DATA伪指令可以放在源程序的开头或末尾MOV R0,ADDRESSMOV R0,ADDRESSMOV R1,#ADDRESSMOV R1,#ADDRESSADDRESS DATA 31HADDRESS DATA 31H将31H31H单元内容送R0,(R1)=31HR0,(R1)=31H。字符名字符名字符名字符名 DATA DATA 表达式表达式表达式表达式1212第12页/共44页汇
13、编终止命令END(End of assembly)用于终止源程序的汇编工作,在一个源程序中只能有一条END命令,并且位于程序的最后。如果END命令出现在程序中间,则其后面的源程序将不予处理。1313第13页/共44页一般汇编调试工具要求的汇编格式一般用汇编语言编写的程序,要求指出该程序存放于内存地址的位置,并且将用到的数据和需要预留存放数据的空间用伪指令定义好然后编写程序代码最后用原地踏步或返回起始位置循环作为结束。ORGORGSJMP$SJMP$ENDEND【例】程序格式如下:1414第14页/共44页汇编语言程序的基本结构形式15第15页/共44页分支结构使用条件转移指令对程序的执行结果进
14、行判断JZ、JNZ、CJNE、DJNZJC、JNC、JB、JNB、JBC16第16页/共44页【例】二分支。在外部RAM中有ST1、ST2和ST3共3个连续单元,其中ST1和ST2单元中存放着两个无符号二进制数,要求找出其中的大数并存入ST3单元中。17第17页/共44页【例】三分支-多次二选一。设变量x存入30H单元,求得函数y存入31H单元。按下式要求给y赋值:x-1(x5)0(5x 10)x+1(x10)Y=要根据要根据x的大小来决定的大小来决定y值,在判断值,在判断x5和和y10时,采用时,采用CJNE和和JC以及以及CJNE和和JNC指令进行判断。指令进行判断。18第18页/共44页
15、ORG 1000HMOV A,30H;取取xCJNE A,#5,NEXT1;与与5比较比较NEXT1:JC NEXT3;x5,则转,则转NEXT3CJNE A,#10,NEXT2;与与10比较比较NEXT2:JNC NEXT4;x10,则转,则转NEXT4MOV R0,#0;5x 10,y=0SJMP NEXT5NEXT3:MOV R0,ADEC R0;x5,y=x-1SJMP NEXT5NEXT4:MOV R0,AINC R0;x10,y=x+1NEXT5:MOV 31H,R0;存结果存结果SJMP$END19第19页/共44页多分支转移使用变址寻址转移指令(散转指令)JMP A+DPTR
16、;PC(A)+(DPTR)数据表、转移指令表、堆栈操作2020第20页/共44页通过数据表实现程序多分支21MOV MOV A,#kA,#k;分支序号分支序号k k送送A AMOV DPTR,#BRTABMOV DPTR,#BRTAB;表首址表首址MOVC A,A+DPTRMOVC A,A+DPTR;查表后,查表后,(A)=BRk-BRTAB(A)=BRk-BRTABJMP A+DPTRJMP A+DPTR;散转指令散转指令,(PC)=BRk,(PC)=BRkBRTAB:BRTAB:DB DB BR0-BRTABBR0-BRTAB;数据表数据表,BRTAB+0,BRTAB+0DBDBBR1-B
17、RTABBR1-BRTAB;分支入口地址与表首址之差分支入口地址与表首址之差,BRTAB+1,BRTAB+1DBDBBRn-BRTABBRn-BRTAB;BRTAB+n;BRTAB+nBR0:BR0:;各个分支程序各个分支程序BR1:BR1:BRn:BRn:第21页/共44页通过转移指令表实现程序多分支22MOV A,#k;分支序号k送ARL A;分支序号乘以2MOV DPTR,#BRTAB;表首址JMP A+DPTR;(PC)=BATAB+2kBRTAB:AJMP BR0;转分支程序0,BRTABAJMP BR1;转分支程序1,BRTAB+2AJMP BRn;转分支程序n,BRTAB+2nB
18、R0:BR0:;各个分支程序各个分支程序BR1:BR1:BRn:BRn:第22页/共44页使用长转移指令LJMP时,MOV A,#kRL AADD A,R3MOV DPTR,#BRTABJMP A+DPTRBRTAB:LJMP BR0;BRTABLJMP BR1;BRTA+3 LJMP BRn;BRTAB+3n23第23页/共44页通过堆栈操作实现程序多分支24MOV DPTR,#BRTAB;MOV DPTR,#BRTAB;分支程序入口地址表首址分支程序入口地址表首址MOV MOV A,#kA,#k;分支序号放入分支序号放入A A中中RL ARL A;分支序号值乘以分支序号值乘以2 2MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇编语言 程序设计 解读 实用
限制150内