文档详情

c单片机汇编语言程序设计新解读.pptx

发布:2020-02-22约1.85千字共44页下载文档
文本预览下载声明
单片机原理与应用 Principle Application of MCU ;教学内容及要求;汇编语言源程序的编辑和汇编;机器编辑→交叉汇编→串行传送;编辑、汇编;80C51单片机汇编语言伪指令;汇编起始地址命令 ORG (Origin);定义字节命令 DB (Define Byte);定义数据字命令 DW (Define Word);预留存储区命令 DS (Define Storage);位定义命令 BIT;赋值命令 EQU (Equate);数据地址赋值伪指令 DATA;汇编终止命令 END (End of assembly);一般汇编调试工具要求的汇编格式;汇编语言程序的基本结构形式;分支结构;【例】二分支。在外部RAM中有ST1、ST2和ST3共3个连续单元,其中ST1和ST2单元中存放着两个无符号二进制数,要求找出其中的大数并存入ST3单元中。;【例】三分支-多次二选一。设变量x存入30H单元,求得函数y存入31H单元。按下式要求给y赋值:; ORG 1000H MOV A,30H ;取x CJNE A,#5,NEXT1 ;与5比较 NEXT1: JC NEXT3 ;x<5,则转NEXT3 CJNE A,#10,NEXT2 ;与10比较 NEXT2: JNC NEXT4 ; x>10,则转NEXT4 MOV R0,#0 ;5≤x ≤10,y=0 SJMP NEXT5 NEXT3: MOV R0,A DEC R0 ;x<5,y=x-1 SJMP NEXT5 NEXT4: MOV R0,A INC R0 ;x10,y=x+1 NEXT5: MOV 31H,R0 ;存结果 SJMP $ END;多分支转移;通过数据表实现程序多分支;通过转移指令表实现程序多分支;使用长转移指令LJMP时,;通过堆栈操作实现程序多分支;循环结构;【例】单循环。编程实现把外部RAM中从8000H开始的100个字节数据传送到8100H开始的单元中。;【例】由循环内部跳出循环。把长度为10H的字符串从内部RAM缓冲区inbuf向位于外部RAM的输出缓冲区outbuf传送,一直进行遇到回车符CR或整个字符串传送完毕。;子程序;调用延时子程序DELAY。;80C51单片机汇编语言程序设计举例;单循环定时程序;较长时间的定时程序;通过一个基本延时程序产生不同的定时;查表指令;查表程序;【例】分别用两条查表指令编写一段子程序,功能为:根据累加器A中的数(0~9之间)查找平方表,求出相应的平方数,放在A中。;【例】子程序。编程实现运算式c=a2+b2。假定a、b、c分别存放在内部RAM的30H、31H、32H单元中;【例】阶乘计算 求Y=n!(n=0,1,2,…,9)的值。; ORG 2000H TEM EQU 30H FACTORIAL: MOV B,#3 MUL AB ;n在A中,n×3 MOV B,A ;暂存B中 MOV DPTR,#TAB ;指向表首址TABL MOV A,@A+DPTR ;查表取低字节 MOV R0,A ;存入R0 INC DPTR ;修正地址指针 MOV A,B ;恢复n×3 MOV A,@A+DPTR ;查表取中间字节 MOV R1,A ;存入R1 INC DPTR ;修正地址指针 MOV A,B ;恢复n×3 MOVC A,@A+DPTR ;查表取高字节 MOV R2,A ;存入R2 RET TAB: DB 0,0,0, 0,0,1,0,0,2, 0,0,6 ;0,1,2,3的阶乘 DB 0,0,18H,0,0,78H,0,2,D0H ;4,5,6的阶乘 DB 0,13H,0B0H,0,9DH,80H ;7,8的阶乘 DB 5,89H,80H ;9的阶乘 ;【KEY的简单控制】在某单片机系统中,按下一按键,键值(代表哪个键被按下)存放在内部RAM的40H单元内。设计一段程序实现功能:如果(40H)=00H,调用子程序SUB1;如果(40H)=01H,调用子程序SUB2;如果(40H)=02H,调用子程序SUB3;如果(40H)=03H,调用子程序SUB4;如果(40H)=04H,调用子程序SUB5。;小结;本讲结束! 谢谢同学们!;小结
显示全部
相似文档