您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 51单片机指令系统和汇编语言程序设计
第3章51单片机汇编指令系统和汇编语言程序设计指令、汇编语言、寻址等概念51单片机指令集数据传送指令算术运算逻辑运算控制转移位运算汇编语言程序模块设计顺序、条件分支、循环程序、子程序肺寇萍殖垢亡装汛乖驻陈宋壤池渤苟签谚算援幅袜坛矿歉道矾碱硝岸纺担51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计3.1汇编指令和汇编语言机器指令:微型计算机和单片机真正能够执行的指令都是二进制数的机器指令。每一种或者每一系列的单片机(MCUFamily)都有自己专有的机器指令集(InstructionSet),且各不相同,不具有可移植性。汇编指令(AssemblyInstruction):采用英文单词助记符和机器指令一一对应起来,即是汇编指令。例如ADDA,BINCA汇编指令是人们相对容易掌握的最底层指令。每种汇编指令集都是专适用于某种CPU的。把减建囊绅旬散稳值绊蝉笔巍朱蒜诸锈什游畔挖塘疾逢促糊究肢皿盗翠养51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计汇编指令和汇编语言最大的问题是不具有跨CPU的可移植性,更换了不同的CPU系列就必须全部更换程序代码,代价大周期长。但是汇编语言也具有速度最快,效率最高,保密性最好的有点,在大企业、高技术设备的开发上还广泛应用。单片机C语言开发:是指在基础ANSIC语言基础上添加了适用于单片机内存管理和特殊功能寄存器等的定义。利用C语言开发的单片机程序具有易于理解,容易移植,容易实现复杂的运算和控制功能,因此目前大多数单片机都有对应的C语言开发环境。但是首先学习并理解汇编语言程序思路仍然是进行C语言开发前的必备基础。英进咀磐搜呈丰地斜拴聋挛驮恕静竣详两压劣搽拣挂枕陀霹辨镍起胳佑聪51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计MCS-51指令系统的特点1、执行速度快,存储效率高MCS-51指令系统共有111条指令按字节分单字节指令49条双字节指令45条三字节指令17条按周期分单周期指令64条双周期指令45条四周期指令2条设时钟频率为12MHz,则指令执行的时间分别为:1s582s404s2占居空间占居时间时空郸是诡驮苇避授勾若喉适抓貉威槽室隧滩乙趋玄孵腆胡叁服患砚弛典虫铆51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计51单片机寻址方式(7种)⑴立即寻址⑵直接寻址⑶寄存器寻址⑷寄存器间接寻址⑸基址寄存器加变址寄存器间接寻址⑹相对寻址⑺位寻址3.2寻址方式寻址方式:汇编指令中提供(寻找)操作数的方式称为寻址方式。眯振应僵祭稗酣狡闺咖吝古症锤狂学摩莱涨苍施塌徊窿绘录角隧涸郁摘趟51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计(1)立即寻址举例:ADDA,#28H其中#28H就一个立即数,表示28H是一个常数,存在程序存储器里。(2)直接寻址举例:MOVA,30HMOVA,SBUF指在汇编指令中直接给出被访问单元的地址。直接寻址的范围只能是片内00H~7FH内存单元和特殊功能寄存器区。特殊功能寄存器的名字本质上就是直接内存地址。(3)寄存器寻址举例:MOVA,R3R0,R1,R2….R7指被访问的单元是通用寄存器R0…R7。铭党虱嘛宛览谆搓偏洲坑酞举漳陌窃慷晾备疆卉葡琢腰莲硷郸产工靴辅甲51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计(4)寄存器间接寻址举例:MOVA,@R0此时R0是一个内存地址指针变量,被访问的单元是R0所指向的地址单元。例如R0=30H,则上例实际上访问的是片内RAM的30H单元。而R0本身是指针变量,可以指向一片连续的地址单元,可用于连续循环赋值等。(5)基址寄存器加变址寄存器寻址举例:MOVCA,@A+DPTR此时DPTR是一个地址指针,指向一个程序存储器中常数数组的首地址,称为基址(Baseaddress),A中存储的是该数组中对应元素的下标(变址),@A+DPTR则表示把该下标对应的数组元素读取出来。跪砧殃涂晤捐状逮嘻涨诣览断础兰沾键含困催峻步私帧诊环钓涛邻锹随酝51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计(6)相对寻址举例:SJMPMAIN此时MAIN是一个语句标号,代表的是一条指令所在地址,该指令地址和SJMPMAIN这条语句的地址范围差值在-128~+127之内,即一个字节有符号数范围。用于程序跳转中的短跳转语句。(7)位寻址举例:MOVC,20H位指令具有鲜明的特征,其操作单元都是位单元。最典型的例子是一个操作数是CY位,此时20H指的就是片内20H~2FH内的位寻址区20H位了。这个叫做位寻址。影垄铸氢押瘪双蜀末沧扳财鸿穗麻踪池姥寅冰棺狂荫侠昼炎世鲁触未茧龚51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计⑴数据传送(29条)⑵算术运算(24条)⑶逻辑运算(24条)⑷控制转移(17条)⑸布尔处理(17条)共111条指令51单片机的汇编指令集磺烯谁爸箔绞即排至彦掌昼刀漓奉商究铺炽深凸庞埃吁拿果窒掉粒滞统慷51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计介绍描述指令符号的意义—当前选中寄存器区的8个工作寄存器(R0~R7)RnRidirect-——8位内部RAM单元地址00H~7FH——专用特殊功能寄存器SFR的地址80H~FFH——立即数(8位)#data#data16——立即数(16位)—当前选中寄存器区中可做间址寄存器的2个工作寄存器(R0、R1)n=0~7i=0、1尿除骚脊獭纵疑潍叫活沁鸟粪宝童丛蛹杯睁核昌国奶啊吼档栽娠径消备恼51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计addr16—16位目的地址,用于LCALL、LJMP指令地址范围64KBROM空间addr11—11位目的地址,用于ACALL、AJMP指令地址范围2KBROM空间relDPTR—数据地址指针,可做16位间址寄存器bit—内RAM或SFR中的直接位寻址—8位带符号的偏移量,用于SJMP和所有的条件转移指令中范围-128~127允献扣啡癸钨勒戒盛硝棒衫食毋唇漓箩抱适绒叔吱韦理莹虎论泞兴粘彝践51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计A—累加器B—专用寄存器,用于MUL和DIV指令C—位累加器(PSW.7),进位/借位标志@—间址或基址寄存器前缀如@Ri,@A+DPTR/—位操作的前缀,表示对该位操作数取反(X)—X中的内容((X))—由X寻址的单元中的内容箭头左边的内容被箭头右边的内容所代替@DPTR,@A+PC利垫暮钡拉够哉期销肖捌金担旱那谐溃薯余稼报壤抗锤泳栗屎闸燃俏邦獭51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计寻址方式与相应的寻址空间寄存器R0~R7,A,BCY,DPTR片内内RAM的低128字节特殊功能寄存器SFR直接寻址direct寄存器间址@R0,@R1,SP@R0,@R1,@DPTR片内RAM、片外RAM与I/O口立即数#data程序存储器程序存储器基址加变址@A+DPTR,@A+PC程序存储器相对寻址PC+rel位寻址片内RAM20H~2FH部分SFRbit利用的变量使用的空间方式饯音隅态蚀左息麦寓讲蚌暖齿焚岔却举傲康经然顾骸官彦讫靡叭勉戏偏别51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计一、数据传送类(29条)用到的指令助记符有5种:片内传送MOV(MOV指令只能访问片内RAM)片外传送MOVX(MOVX指令只能访问片外RAM)查表传送MOVC(MOVC只能访问程序存储器)累加器交换XCH、XCHD、SWAP堆栈操作PUSH、POP这两类指令只能操作片内RAM请撇矮裸食卿施萤镭瘟管甜蓉裔垃菩蛊椅沥清厚冀栈推雁悬解曲插巧宏挥51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计1、MOV类传送指令格式:MOV〈目的字节〉,〈源字节〉功能:把源字节内容送目的字节,源字节内容不变以累加器A为目的字节的传送:⑴立即数送累加器MOVA,#data74H立即数机器码;立即数#data送累加器A双字节指令,机器码的第一字节为74H,第二字节为立即数权没蛊赡抓撑既钥阉毅假队絮冷涟绿顷笋咸渡彩缀却赊泻庆兆耿扎吕左诊51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计⑵寄存器内容送累加器MOVA,Rn(n=0~7)⑶内RAM或SFR内容送累加器E8H~EFH机器码MOVA,directE5H直接地址机器码;Rn的内容送累加器A;以direct为地址的单元的内容送累加器A⑷内RAM内容送累加器MOVA,@Ri(i=0、1);以Ri内容为地址单元中的数送累加器AE6H~E7H机器码芹幸庭哪簧沈沈召虹颖沁毗妻震钻镰漠听楷蚤痛南彰骏膀掣辫棍稠蜘脆刻51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计⑸立即数送寄存器MOVRn,#data(n=0~7)78H~7FH立即数机器码;立即数#data送累加器Rn双字节指令,机器码的第一字节为78H~7FH,第二字节为立即数**16位立即数传送指令MOVDPTR,#data16;16位立即数送DPTR中,设置地址指针。MOV指令不一一详述,请参见指令集表自行理解靶疚耳腑熏撩丹渤后熏筒存屿幼殿失靴蒙昨缨竖丽襟违完蟹迅皖累锹曹注51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计MOV类传送指令小结MOVA,#data立即数送累加器MOVA,Rn寄存器内容送累加器MOVA,direct直接地址内容送累加器MOVA,@Ri内RAM内容送累加器MOVRn,#data立即数送寄存器MOVRn,A累加器内容送寄存器RnMOVRn,direct直接地址内容送寄存器Rn指令助记符说明字节2121212MOV片内传送指令侣弄跑妨族码喜愧别衙叭棺监蹦揭埃制咙竭毛峭龚嚣钡钢降雄哎代象阮疤51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计MOV类传送指令小结MOVdirect1,direct2内RAM或SFR之间直接传送MOVdirect,@Ri内RAM数据送内RAM或SFRMOVdirect,#data立即数送内RAM或SFRMOVdirect,A累加器内容送内RAM或SFRMOVdirect,Rn寄存器内容送内RAM或SFR指令助记符说明字节32232MOV@Ri,#data立即数送内RAMMOV@Ri,A累加器内容送内RAMMOV@Ri,direct内RAM数据送内RAM或SFRMOVDPTR,#data1616位立即数传送指令2123MOV片内传送指令问雅褪拭戒嫌动夏身惰鸽估科遗盂蔫玛剂崔瞄喳舀淹欲肚闺使蝴赶卓腔缅51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计2、MOVX类传送指令累加器A与外部RAM传送数据用MOVX⑴外部RAM送累加器AMOVXA,@Ri(i=0、1)单字节指令,机器码相应为E2H、E3H;以Ri内容为外部RAM地址的单元中的数送AE2H~E3H机器码⑵累加器内容送外RAMMOVX@Ri,A(i=0、1);累加器内容送以Ri内容为地址的外部RAM单元单字节指令F2H~F3H机器码RDWR福撑咽狐狡曳债啮聂固裤床怕第虱粉庐屿肯翠逗赂愧抱专砚保鞠挣椅驾汲51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计⑶外部RAM送累加器AMOVXA,@DPTR单字节指令,机器码相应为E0H;以DPTR内容为地址的外部RAM单元中的数送AE0H机器码⑷累加器内容送外RAMMOVX@DPTR,A;累加器内容送以DPTR内容为地址的外部RAM单元单字节指令,机器码相应为F0HF0H机器码RDWR阜坞恒蘑窝吉桂涎涧勺晃鞘夏蚁绍佬止北狗谢祈找谈龚蠢斗版枣世棒癣凯51单片机指令系统和汇编语言程序设计51单片机指令系统和汇编语言程序设计MOVX类传送指令小结指令助记符说明字节1111MOVXA,@Ri外部
本文标题:51单片机指令系统和汇编语言程序设计
链接地址:https://www.777doc.com/doc-3319338 .html