51单片机学习第五章.docx
- 文档编号:25674895
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:19
- 大小:76.13KB
51单片机学习第五章.docx
《51单片机学习第五章.docx》由会员分享,可在线阅读,更多相关《51单片机学习第五章.docx(19页珍藏版)》请在冰豆网上搜索。
51单片机学习第五章
第五章汇编语言程序设计基础(共3次课,共6课时)
章节题目
第一次课:
汇编语言及汇编过程
教学目的
和要求
1.理解源程序、目标代码、编辑、汇编等含义
2.了解汇编过程
3.掌握伪指令的使用
教学重点
和难点
重点:
伪指令的使用
难点:
汇编过程
教学方式
传统方法和多媒体
教
学
过
程
一、复习提问、导入新课
MCS-51指令
二、讲授新课
1.汇编程序功能
2.伪指令
三、总结
本次课应着重掌握和理解以下几个问题:
1.为什么要对汇编程序进行汇编?
2.机器汇编的过程是怎样的?
3.常用伪指令的功能是什么?
5.1汇编程序的汇编
一、汇编程序功能
汇编
源程序目标程序
(汇编指令程序)(机器码指令程序)
汇编指令与机器码指令有一一对应的关系。
汇编程序是一种翻译程序,将源程序翻译成目标程序。
二、汇编程序的汇编过程
汇编有两种方法:
手工汇编、机器汇编。
1.手工汇编:
第一次汇编:
确定地址,翻译成各条机器码,字符标号原样写出;
第二次汇编:
标号代真,将字符标号用所计算出的具体地址值或偏移量代换。
源程序地址目标程序
第一次汇编第二次汇编
ORG1000H
START:
MOVR0,BUFFER-11000A82FA82F
MOVR2,#00H10027A007A00
MOVA,@R01004E6E6
MOVR3,A1005FBFB
INCR310060B0B
SJMPNEXT100780NEXT8005
LOOP:
INCR010090808
CJNE@R0,#44H,NEXT100AB644NEXTB64401
INCR2100D0A0A
NEXT:
DJNZR3,LOOP100EDBLOOPDBF9
MOVRESULT,R210108A2A8A2A
SJMP$101280FE80FE
BUFFERDATA30H
RESULTDATA2AH
END
2.机器汇编
两次扫描过程。
第一次扫描:
检查语法错误,确定符号名字;建立使用的全部符号名字表;每一符号名字后跟一对应值(地址或数)。
第二次扫描:
是在第一次扫描基础上,将符号地址转换成真地址(代真);利用操作码表将助记符转换成相应的目标码。
三、伪指令
伪指令是告诉汇编程序,如何汇编源程序的指令。
伪指令既不控制机器的操作,也不能被汇编成机器代码,故称为伪指令。
1.起始地址伪指令ORG
ORGaddr16
用于规定目标程序段或数据块的起始地址,设置在程序开始处。
2.汇编结束伪指令END
告诉汇编程序,对源程序的汇编到此结束。
一个程序中只出现一次,在末尾。
3.赋值伪指令EQU
告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。
格式:
标号名称EQU数值或汇编符号
“标号名称”在源程序中可以作数值使用,也可以作数据地址、位地址使用。
先定义后使用,放在程序开头。
4.定义字节伪指令DB
告诉汇编程序从指定的地址单元开始,定义若干字节存储单元并赋初值。
格式:
[标号:
]DB字节数据或字节数据表
5.定义字伪指令DW
从指定地址开始,定义若干个16个位数据,高八位存入低地址;低八位存入高地址。
例ORG1000H
PIOI:
DW7654H,40H、12、‘AB’
6.数据地址赋值伪指令DATA
将表达式指定的数据地址赋予规定的字符名称
格式:
字符名称DATA表达式
注:
该指令与EQU指令相似,只是,可先使用后定义,放于程序开头、结尾均可。
7.定义空间伪指令DS
从指定地址开始,保留由表达式指定的若干字节空间作为备用空间。
格式:
[标号:
]DS表达式
例2ORG1000H
DS0AH
DB71H,11H,11H;从100BH开始存放71H、11H、11H。
注:
DB、DW、DS只能用于程序存储器;而不能用于数据存储器。
8.位地址赋值伪指令BIT
将位地址赋予规定的字符名称。
格式:
字符名称BIT位地址
例3X1BITP12
相当于X1EQU92H
小结:
1.为什么要对汇编程序进行汇编?
2.机器汇编的过程是怎样的?
3.常用伪指令的功能是什么?
章节题目
第二次课:
汇编程序的基本结构
教学目的
和要求
1.掌握汇编语言的三种结构
2、掌握顺序结构、分支结构程序的编写方法
教学重点
和难点
重点:
顺序结构、分支结构
难点:
分支结构、分支条件的确定
教学方式
传统方法和多媒体
教
学
过
程
一、复习提问、导入新课
二、讲授新课
1.顺序结构
2.分支结构
三、总结
本次课应着重掌握和理解以下几个问题:
1.汇编程序有哪三种基本结构?
2.构成分支程序,常用到哪些判断语句?
5.2汇编语言程序的基本结构
按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构等构成。
如图1所示。
顺序结构分支结构
NY
图(a)图(b)
循环结构
入口入口
Y
N
N
出口Y
出口
图(c)
图1常用程序结构
一、顺序程序举例
例1、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。
解:
字节分解:
60H
60H61H
核心指令ANL
ORL1000H
MODE:
MOVR0,#60H
MOVXA,@R0
MOVB,A
ANLA,#0F0H
SWAPA
MOVX@R0,A
ANLB,#0FH
MOVA,B
INCR0
MOVX@R0,A
END
二、分支结构与分支程序设计
结构:
根据不同的条件,进行相应的处理。
通常用条件转移指令形成简单分支结构。
如:
判(A)=Z或NZ,转移
判(CY)=1或0,转移
判(bit)=1或0,转移
CJNE比较不相等转移
例3、设a存放在累加器A中,b存放在寄存器B中,要求按下式计算Y值,并将结果Y存于累加器A中,试编写程序。
a-b(a≥0)
Y=
a+b(a<0)
解:
本题关键是判a是正数,还是负数;由ACC.7便知。
ORG1000H
BR:
JBACC7,MINUS
CLRC
SUBBA,B
SJMPDONE
MINUS:
ADDA,B
DONE:
SJMP$
END
例4、设有两个16位无符号数NA,NB分别存放在8031单片机内部RAM的40H、41H及50H、51H单元中,当NA>NB时,将内部RAM的42H单元清0;否则,将该单元置成全1,试编程。
解法I:
因为无16位数的比较指令,所以,只能用8位数的比较指令。
ORG2000H
CMP:
MOVA,50H
CJNEA,40H,CMP1
MOVA,51H
CJNEA,41H,CMP1
SJMPNHIGHE
CMP1:
JCHIGHE
NHIGHE:
MOV42H,#0FFH
SJMPDONE
HIGHE:
MOV42H,#00H
DONE:
SJMP$
END
上述程序中多次用到SJMP语句,该语句为无条件转移语句。
无条件语句应尽量少用,这样可使程序结构紧凑而易读,易理解。
解法II:
先假设NA>NB,再来判断是否NA≤NB
ORG3000H
CMP2:
MOVR0,#00H
MOVA,50H
CJNEA,40H,CMP3
MOVA,51H
CJNEA,41H,CMP3
SJMPNHIGHE
CMP3:
JCHIGHE
NHIGHE:
MOVR0,#0FFH;不大于标志
HIGHE:
MOV42H,R0
SJMP$
END
小结:
1.汇编程序有哪三种基本结构?
2.构成分支程序,常用到哪些判断语句?
章节题目
第三次课:
典型问题程序设计举例
教学目的
和要求
1.掌握循环程序结构
2.了解循环结束判断的两种方法
3.能编写单间的单循环、双循环的程序
教学重点
和难点
重点:
单循环程序编制
难点:
循环程序的结构构思
教学方式
传统方法和多媒体
教
学
过
程
一、复习提问、导入新课
1.循环转移指令DJNZ的功能
2.汇编程序的在三种基本结构
二、讲授新课
1.单循环程序
2.多重循环程序
三、总结
本次课应着重掌握和理解以下几个问题:
1.循环程序包括几部分内容?
2.何谓单循环,多重循环?
3.何谓循环程序的先判断,后处理;先处理,后判断?
5.3汇编语言程序的基本结构及应用举例
循环结构不但使程序简练,而且大大节省存储空间。
循环程序包含四部分:
1.初始化部分
2.循环处理部分(主体)
3.循环控制部分(修改地址指针、修改变量、检测循环结束条件)
4.循环结束部分(对结果分析、处理,存放结果)
循环有:
单循环、多重循环。
循环次数已知,可用计数器控制循环次数;循环次数未知,按问题条件控制循环是否结束。
一、单循环程序
1.循环次数是已知的程序
例1、已知片外RAM的10H单元存放8位二进制数,要求将其转移成相应的ASCII码,并以高位在前,低位在后的顺序,依次存放到片外RAM以11H为首地址的连续单元中,试编程。
先处理,后判断:
先判断,后处理:
解:
思路:
先将中间单元置成30H,然后判欲转换位是否为1,
若是,则将中间单元内容加1;否则,中间单元内容保持不变。
通过左移指令实现由高到低的顺序进行转换。
ORG1000H
START:
MOVR2,#08H;循环计数初值(循环次数已知)
MOVR0,#10H;地址指针初值
MOVXA,@R0;取数
MOVB,A;暂存B中
LOOP:
MOVA,#30H;将中间单元(A)置成30H
JNBB.7,NA;判断转换的二进制位为0否?
;若是转NA
INCA;若为1,则(A)内容加1,成为
;1的ASCII码“31H”
NA:
INCR0;修改地址指针
MOVX@R0,A;存放转换的结果
MOVA,B
RLA,B;作好准备,判断下一位
MOVB,A;暂存
DJNZR2,LOOP;判断转换结束否?
未完继续
SJMP$
END
(2)循环次数未知的程序
例2、设用户用键盘输入长度不超过100字节的字符串放在8031单片机外部RAM以20H为首地址的连续单元,该字符串用回车符CR(‘CR’=0DH)作为结束标志,要求统计此字符串的长度并存入内部RAM的1FH单元中。
解:
从首单元开始取数,每取一数判断其是否为‘CR’,是则结束。
ORG1000H
STADADATA20H
SLANGDATA1FH
CMCR2:
MOVR0,#STADA-1
MOVB,#0FFH
CRLOP:
INCR0
INCB
MOVXA,@R0
CJNEA,#0DH,CRLOP
MOVSLANG,B
SJMP$
END
2.多重循环设计
循环体中还包含着一个或多个循环结构,即双重或多重循环。
例3、设8031使用12MHz晶振,试设计延迟100ms的延时程序。
解:
T=12/fosc=12/(12×106)=1us
ORG1000H
DELAY:
MOVR2,#CTS;T=1us
LOOPS:
MOVB,#CTR;T=1us内外
LOOPR:
DJNZB,LOOPR;2T=2us循循
DJNZR2,LOOPS;2T=2us环环
END
内循环延时:
(1+2×CTR)T=500us(假设)
则CTR=250
实际延时:
[1+2×250]×1us=501us
外循环延时:
T+(501+2T)×CTS=100ms=100000us
所以,CTS=198.8取199
实际延时:
[1+(501+2)×199]=1000.98ms
例4、设在8031内部RAM中存一无符号数的数组,其长度为100,起始地址是30H,要求将它们从大到小排序,排序后仍存放在原区域中,试编者按程。
解:
内RAM第一次循环第二次循环••••••
30H000306
31H030603大
32H060280数
33H028004向
上
100个
90H357624
91H762460
92H246001
93H600000
最多99次循环。
这就是所畏的“冒泡法”。
实际上大多情况,用不到99次循环,排序就结束。
为了提高排序速度,程序中可设一交换标志位,如10H位,每次循环中:
若有交换则SETB10H,若无交换则CLR10H。
每次循环结束时,测10H位,判断排序是否结束。
ORG1000H
BUBBLE:
MOVR0,#30H
MOVB,#64H
CLR10H
DECB;长度计数
LOOP:
MOVA,@R0
MOV20H,A;暂存,为交换作准备
INCR0
MOV21H,@R0
CJNEA,21H,BUEU;若(20H)≠(21H)转移
BUEU:
JNCBUNEXT;(20H)≥(21H)转移
MOVA,@R0;若(20H)<(21H)则交换
MOV@R0,20H
DECR0;使R0退格指向小地址
MOV@R0,A
INCR0;恢复R0指向大地址
SETB10H;置交换标志
BUNEXT:
DJNZB,LOOP
JB10H,BUBBLE;判断标志位为1否?
若为1,则继续
END
小结:
1.循环程序包括几部分内容?
2.何谓单循环,多重循环?
3.何谓循环程序的先判断,后处理;先处理,后判断?
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 学习 第五