单片机及接口技术单片机汇编精选PPT.ppt

上传人:石*** 文档编号:48372367 上传时间:2022-10-06 格式:PPT 页数:21 大小:1.44MB
返回 下载 相关 举报
单片机及接口技术单片机汇编精选PPT.ppt_第1页
第1页 / 共21页
单片机及接口技术单片机汇编精选PPT.ppt_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《单片机及接口技术单片机汇编精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机及接口技术单片机汇编精选PPT.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机及接口技术单片机汇编第1页,此课件共21页哦汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计主要内容主要内容1.汇编语言格式及构成汇编语言格式及构成2.汇编源程序设计步骤及汇编汇编源程序设计步骤及汇编3.顺序程序设计顺序程序设计4.分支程序设计分支程序设计5.循环和查表程序设计循环和查表程序设计6.子程序设计子程序设计第2页,此课件共21页哦2.3.1汇编语言格式汇编语言格式标号段:操作码段标号段:操作码段操作数段;注释段操作数段;注释段如:如:LP1:MOVR2,#10;设置循环次数设置循环次数标标号号段段:指指明明所所在在指指令令操操作作码码字字节节所所在在的的内内存

2、存地地址址。标标号号由由大大写写英英文文字字母母开开头头的的字字母母和数字串组成,长度为和数字串组成,长度为18个字符。标号段可省略。个字符。标号段可省略。2.3.2汇编语言构成汇编语言构成1.指令性语句(助记符语句)指令性语句(助记符语句)2.指示性语句(伪指令)指示性语句(伪指令)a.ORGORG(起始汇编)伪指令(起始汇编)伪指令例:例:ORG2000H;指定程序存储地址从指定程序存储地址从2000H开始开始b.ENDEND(结束汇编)伪指令(结束汇编)伪指令例:例:ENDc.EQU(赋值)伪指令(赋值)伪指令字符名称字符名称EQU数据或汇编符数据或汇编符;将右边的数据或汇编符赋给左边的

3、字符名称;将右边的数据或汇编符赋给左边的字符名称汇汇汇汇编编编编语语语语言言言言格格格格式式式式及及及及构构构构成成成成第3页,此课件共21页哦例如例如:AA EQU RAA EQU R1 1 ;AAAA当作寄存器当作寄存器R R1 1使用使用 A10 EQU 10H A10 EQU 10H ;A10=10HA10=10H DELAY EQU 07E6H DELAY EQU 07E6H;DELAY=07E6H DELAY=07E6H MOV R MOV R0 0,A10,A10 MOV A,AA MOV A,AA LCALL DELAY LCALL DELAYd.d.DATADATADATAD

4、ATA(数据地址赋值)伪指令(数据地址赋值)伪指令 字符名称字符名称 DATA DATA 表达式表达式 ;将右边表达式(;将右边表达式(8 8位)赋左边,位)赋左边,;只能是数据或地址等;只能是数据或地址等DATADATA型型 字符名称字符名称 XDATAXDATAXDATAXDATA 表达式;表达式;16 16位位 例:例:AA DATA 35H AA DATA 35H DELAY XDATA 0A7E6H DELAY XDATA 0A7E6H e.e.DBDBDBDB(字节定义)伪指令(字节定义)伪指令 标号:标号:DB DB 项或项表项或项表 例:例:TAB TAB:DB 45H DB

5、45H,7373,A A ;将;将45H45H、7373、AA依次存放依次存放 ;入;入TABTAB地址开始的存储单元地址开始的存储单元 汇汇汇汇编编编编语语语语言言言言格格格格式式式式及及及及构构构构成成成成第4页,此课件共21页哦f.f.DWDWDWDW(字定义)伪指令(字定义)伪指令 标号:标号:DW DW 项或项表项或项表例例:ORG 1000H ORG 1000H HETAB HETAB:DW 1234H,8AH,10 DW 1234H,8AH,10;(1000H)=12H,(1001H)=34H(1000H)=12H,(1001H)=34H ;(1002H)=8AH,(1003H)

6、=00H,(1004H)=0AH,(1005H)=00H ;(1002H)=8AH,(1003H)=00H,(1004H)=0AH,(1005H)=00Hg.DSg.DS(存储空间定义)伪指令(存储空间定义)伪指令 标号:标号:DS DS 项或项表项或项表例例:SPC SPC:DS 08H DS 08H;从从SPCSPC地址开始,预留地址开始,预留8 8个存储单元个存储单元 DB 25H DB 25H;(SPC+8SPC+8)=25H=25H h.BITh.BIT(位地址赋值)伪指令(位地址赋值)伪指令 字符名称字符名称 BIT BIT 位地址位地址例:例:A1 BIT 00H A1 BIT

7、00H A2 BIT P1.0 A2 BIT P1.0 MOV C MOV C,A1 A1 ;将位地址;将位地址00H00H的值送的值送C Cy y汇汇汇汇编编编编语语语语言言言言格格格格式式式式及及及及构构构构成成成成返回返回返回返回第5页,此课件共21页哦2.3.3汇编源程序设计步骤及汇编汇编源程序设计步骤及汇编源程序设计步骤:源程序设计步骤:1 1)拟拟定定设设计计任任务务书书,设设计计任任务务书书包包括括:程程序序功功能能、技技术术指指标标、精精度度等等级级、实实施施方方案、工程进度、所需设备、研制费用、人员分工案、工程进度、所需设备、研制费用、人员分工2 2)建立数学模型)建立数学模

8、型3 3)确立算法)确立算法4 4)绘制程序流程图)绘制程序流程图5 5)编制汇编语言源程序)编制汇编语言源程序6 6)上机调试)上机调试汇编语言源程序的汇编汇编语言源程序的汇编人工汇编人工汇编机器汇编机器汇编汇汇汇汇编编编编语语语语言言言言格格格格式式式式及及及及构构构构成成成成返回返回返回返回第6页,此课件共21页哦2.3.4 2.3.4 顺序程序设计顺序程序设计例题例题1 1:求一个:求一个1616位二进制位二进制负数的补码。设此负数的补码。设此1616位二进位二进制数存于制数存于NUMNUM、NUM+1NUM+1单单元元 解:补码解:补码=反码反码+1+1ORG 1000HORG 10

9、00HNUM DATA 20HNUM DATA 20HMOV RMOV R0 0,#NUM#NUMMOV AMOV A,RR0 0 CPL ACPL AADD AADD A,#01H#01HMOV RMOV R0 0,A AINC RINC R0 0 MOV AMOV A,RR0 0 CPL ACPL AADDC AADDC A,#00H#00HMOV RMOV R0 0,A ASJMP$SJMP$ENDEND顺顺顺顺序序序序程程程程序序序序设设设设计计计计返回返回返回返回课7第7页,此课件共21页哦2.3.5 2.3.5 分支程序设计分支程序设计 分分分分支支支支程程程程序序序序设设设设计计

10、计计例例题题2 2:已已知知VARVAR单单元元内内有有一一自自变变量量X X,按按如如下下条条件件编编出出求求函函数值数值Y Y并将它存入并将它存入FUNCFUNC单元的程序单元的程序若若X0X0,则,则Y=1Y=1;若若X=0X=0,则,则Y=0Y=0;若若X0X0VAR0,则转,则转POSPOSMOV AMOV A,#0FFH#0FFH;若;若VAR0VAR0,-1-1给给A ASJMP DONESJMP DONEPOS POS :MOV AMOV A,#01H#01HDONEDONE:MOV FUNCMOV FUNC,A A SJMP SJMP$END END返回返回返回返回第8页,此

11、课件共21页哦2.3.6循环和查表程序设计循环和查表程序设计循循循循环环环环和和和和查查查查表表表表程程程程序序序序设设设设计计计计例例题题3 3:已已知知内内部部RAM RAM ADDRADDR为为始始址址的的无无符符号号数数数数据据块块的的块块长长存存储储于于LENLEN单单元元内内,请请编编程找出数据块中的最大数并存入程找出数据块中的最大数并存入MAXMAX单元单元解:解:ORG 1000H ORG 1000H LEN DATA 31H LEN DATA 31H MAX DATA 32H MAX DATA 32H MOV R0 MOV R0,#ADDR#ADDR ;R0R0指向数据块,初

12、始化为数据块首地址指向数据块,初始化为数据块首地址 MOV MAX,#00H MOV MAX,#00H ;MAXMAX单元初始化,清零单元初始化,清零LOOPLOOP:MOV AMOV A,R0 R0 ;开始循环体,将一个数取到;开始循环体,将一个数取到A A CJNE A CJNE A,MAXMAX,BRCHBRCH;比较该数与;比较该数与MAXMAX的大小的大小BRCHBRCH:JC NEXT JC NEXT ;若该数小,则进行下一次循环;若该数小,则进行下一次循环 XCH A XCH A,MAX MAX ;若该数大,则与;若该数大,则与MAXMAX交换交换NEXTNEXT:INC R0

13、INC R0 ;为下一次循环做准备;为下一次循环做准备 DJNZ LEN DJNZ LEN,LOOP LOOP ;判断循环次数;判断循环次数 SJMP SJMP$END END返回返回返回返回第9页,此课件共21页哦例题例题4 4:R0R0的低四位对应一个的低四位对应一个1616进制数码,编写程序,将该数码对应字符的进制数码,编写程序,将该数码对应字符的ASCIIASCII编码编码送入送入R1R1。(例如:若。(例如:若R0R0的低的低4 4位为位为1110B1110B,对应,对应1616进制数码进制数码E E,则将字符,则将字符E E的的ASCIIASCII码送入码送入R1R1)987654

14、3210SJMP$MOVR0,AMOVCA,A+PC解:解:ORG 1000H ORG 1000H MOV A,R0 MOV A,R0 ANL A,#0FH ANL A,#0FH ADD A,#03H ADD A,#03H MOVC A,A+PC ;MOVC A,A+PC ;查表指令查表指令 MOV R1,A;MOV R1,A;指令长度为一个字节指令长度为一个字节 SJMP SJMP$;指令长度为两个字节指令长度为两个字节ASCTABASCTAB:DB DB 0,1,2,3,4;制表制表 DB DB 5,6,7,8,9 DB DB A,B,C,D,E,F END END循循循循环环环环和和和和

15、查查查查表表表表程程程程序序序序设设设设计计计计第10页,此课件共21页哦2.3.7 2.3.7 子程序设计子程序设计 子子程程序序可可自自动动保保护护断断点点(即即主主程程序序中中下下一一条条指指令令的的地地址址),但但不不会会自自动动保保护护现现场场(即即运运行行子子程程序序前前的的寄寄存存器器状状态态),若若要要保保护护现现场场,则则在在子子程程序序的的开开始始部部分分用压入堆栈命令保护现场,在结束部分用弹出堆栈命令恢复现场用压入堆栈命令保护现场,在结束部分用弹出堆栈命令恢复现场 可利用寄存器、存储单元或堆栈进行子程序的入口参数和出口参数传递可利用寄存器、存储单元或堆栈进行子程序的入口参

16、数和出口参数传递例例题题5 5:设设MDAMDA和和MDBMDB内内有有两两数数a a和和b b,请请编编出出求求c=ac=a2 2+b+b2 2并并把把c c送送入入MDCMDC的的程程序序,设设a a和和b b皆皆为为小小于于1010的整数的整数SQRTABSQR1008164493625表表169410RETMOVCA,A+PC子子子子程程程程序序序序设设设设计计计计第11页,此课件共21页哦 ORG 1000HORG 1000H MDA DATA 20H MDA DATA 20H MDB DATA 21 MDB DATA 21 MDC DATA 22H MDC DATA 22H MOV

17、 A,MDA MOV A,MDA ;入口参数传递;入口参数传递 ACALL SQRACALL SQR ;调用子程序;调用子程序 MOV R MOV R1 1,A,A MOV A,MDB MOV A,MDB ACALL SQR ACALL SQR ADD A,R ADD A,R1 1 MOV MDC,A MOV MDC,A SJMP SJMP$SQRSQR:ADD A,#01 ADD A,#01 ;子程序;子程序 MOVC A,A+PC MOVC A,A+PC RET RET ;RETRET为一个字节为一个字节SQRTABSQRTAB:DB 0,1,4,9,16 DB 0,1,4,9,16 ;平

18、方表;平方表 DB 25,36,49,64,81 DB 25,36,49,64,81 END END子子子子程程程程序序序序设设设设计计计计第12页,此课件共21页哦练练习习1 1:外外部部RAMRAM从从0000H0000H到到0080H0080H有有一一数数据据块块,请请编编出出将将它它们们传传送送到到3000H3000H到到3080H3080H区域的程序。区域的程序。解:解:ORG 1000H ORG 1000H MOV R0,#00H MOV R0,#00H MOV DPTR,#3000H MOV DPTR,#3000H MOV R2,81H MOV R2,81HLP1:MOVX A,

19、R0LP1:MOVX A,R0 MOVX DPTR,A MOVX DPTR,A INC R0 INC R0 INC DPTR INC DPTR DJNZ R2,LP1 DJNZ R2,LP1 END END汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计课8第13页,此课件共21页哦练练习习2 2:某某系系有有200200名名学学生生参参加加外外语语统统考考,若若成成绩绩存存放放在在80318031外外部部RAMRAM始始址址为为ENGLISHENGLISH的的连连续续存存储储单单元元,现现决决定定给给成成绩绩在在9595分分100100分分之之间间的的学学生生颁颁发发A A级

20、级合合格格证证书书,给给成成绩绩在在9090分分9494分分之之间间的的学学生生颁颁发发B B级级合合格格证证书书。试试编编一一程程序序,可可以以统统计计A A级级和和B B级级证证书书的的学学生生人人数,并把统计结果分别存入内部数,并把统计结果分别存入内部RAMRAM的的GRADAGRADA和和GRADBGRADB单元。单元。汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计LP:MOVX A,DPTRLP:MOVX A,DPTR CJNE A,#95,BRCH123 CJNE A,#95,BRCH123BRCH123:JNC BRCH1BRCH123:JNC BRCH1 CJ

21、NE A,#90,BRCH23 CJNE A,#90,BRCH23BRCH23:JC DONE BRCH23:JC DONE INC GRADB INC GRADB SJMP DONE SJMP DONEBRCH1:INC GRADABRCH1:INC GRADADONE:INC DPTRDONE:INC DPTR DJNZ R2,LP DJNZ R2,LP SJMP$SJMP$END END解:解:ORG 1000HORG 1000HENGLISH XDATA 2000HENGLISH XDATA 2000HGRADA DATA 30HGRADA DATA 30HGRADB DATA 31H

22、 GRADB DATA 31H MOV DPTR,#ENGLISHMOV DPTR,#ENGLISHMOV R2,#200MOV R2,#200MOV GRADA,#00HMOV GRADA,#00HMOV GRADB,#00HMOV GRADB,#00H第14页,此课件共21页哦练练习习3 3:已已知知:在在内内部部RAMRAM中中,共共有有两两组组无无符符号号四四字字节节被被加加数数和和加加数数分分别别存存放放在在FIRSTFIRST和和SECONDSECOND为为始始址址的的区区域域(低低字字节节在在前前,高高字字节节在在后后),请请编编程程求和(设和也为四字节),并把和存于求和(设和也

23、为四字节),并把和存于SUMSUM开始的区域。开始的区域。汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计LP:MOV R0,50HLP:MOV R0,50H MOV A,R0 MOV A,R0 MOV R0,51H MOV R0,51H ADDC A,R0 ADDC A,R0 MOV R1,A MOV R1,A INC 50H INC 50H INC 51H INC 51H DJNZ R2,LP DJNZ R2,LP SJMP$SJMP$END END解:解:ORG 1000HORG 1000HFIRST DATA 30HFIRST DATA 30HSECOND DATA 3

24、1H SECOND DATA 31H MOV 50H,#FIRSTMOV 50H,#FIRSTMOV 51H,#SECONDMOV 51H,#SECONDMOV R1,#SUMMOV R1,#SUMMOV R2,#4MOV R2,#4CLR CCLR C第15页,此课件共21页哦练练习习4 4:已已知知片片内内RAMRAM的的MDAMDA单单元元和和MDBMDB单单元元分分别别存存有有两两个个整整数数a a、b b,请请用用查查表表子子程程序实现序实现C=aC=a2 2+2ab+b+2ab+b2 2,并把和存于片内,并把和存于片内RAMRAM的的MDCMDC单元。设单元。设a a、b b均小于

25、均小于5 5。汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计SQR:ADD A,#1 SQR:ADD A,#1 MOVC A,A+PC MOVC A,A+PC RET RETTAB:DB 0,1,4,9,16,25TAB:DB 0,1,4,9,16,25 DB 36,49,64,100 DB 36,49,64,100 SJMP$SJMP$END END解:解:ORG 1000HORG 1000HMDA DATA 30HMDA DATA 30HMDB DATA 31HMDB DATA 31HMDC DATA 32H MDC DATA 32H MOV A,MDAMOV A,MDA

26、ADD A,MDBADD A,MDBACALL SQRACALL SQRMOV MDC,AMOV MDC,A第16页,此课件共21页哦练练习习5 5:设设晶晶振振频频率率为为6MHz6MHz,试试编编写写一一能能延延时时20ms20ms的的子子程程序序。(提提示示:采采用用NOP指指令延时)令延时)汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计DELAY:MOV R3,#20DELAY:MOV R3,#20EXT :MOV R2,#50EXT :MOV R2,#50INN :NOPINN :NOP DJNZ R2,INN DJNZ R2,INN DJNZ R3,EXT DJN

27、Z R3,EXT RET RET 解:解:分析:分析:1 1个机器周期为个机器周期为12/(6*1012/(6*106 6)=2us)=2us,则则20ms20ms需消耗需消耗 20*10 20*10-3-3/(2*10/(2*10-6-6)=1000)=1000 个机器周期个机器周期 NOP NOP为单周期指令,所以需循环为单周期指令,所以需循环10001000次,一个次,一个8 8位的存储单元只能最大位的存储单元只能最大只能存储只能存储255255,所以,需要采用双重循环。,所以,需要采用双重循环。本程序分别采用本程序分别采用R2R2和和R3R3存储内、外循环次数,内循环存储内、外循环次数

28、,内循环5050次,外循环次,外循环2020次。次。思考:误差太大,如何精确定时?思考:误差太大,如何精确定时?课9第17页,此课件共21页哦练练习习6 6:片片内内RAMRAM从从30H30H单单元元开开始始存存放放一一个个正正数数表表,以以”-1”-1”作作为为表表的的结结束束标标志志,编程将该表的长度存入片内编程将该表的长度存入片内RAM70HRAM70H单元。设表的长度小于单元。设表的长度小于255255汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计LP:MOV A,R0 LP:MOV A,R0 CJNE A,0FFH,CHK CJNE A,0FFH,CHK SJMP

29、 DONE SJMP DONECHK:INC 70HCHK:INC 70H SJMP LP SJMP LPDONE:SJMP$DONE:SJMP$END END解:解:ORG 1000HORG 1000HMOV R0,#30HMOV R0,#30HMOV 70H,#00HMOV 70H,#00H第18页,此课件共21页哦EXT:MOV R0,#10H;EXT:MOV R0,#10H;内循环初始化内循环初始化 MOV MAX,R0 MOV MAX,R0 MOV A,R2 ;MOV A,R2 ;设置内循环次数设置内循环次数 MOV R3,A MOV R3,AINN:MOV A,R0INN:MOV

30、A,R0 CJNE A,MAX,BRCH1 CJNE A,MAX,BRCH1BRCH1:JC NEXTBRCH1:JC NEXT XCH A,MAX ;XCH A,MAX ;交换交换 MOV R0,A MOV R0,ANEXT:INC R0 ;NEXT:INC R0 ;指针指向下一个数指针指向下一个数 DJNZ R3,INN DJNZ R3,INN MOV A,MAX ;MOV A,MAX ;存储最大数存储最大数 MOVX DPTR,A MOVX DPTR,A CLR C ;DPTR CLR C ;DPTR自减自减1 1 SUBB DPTR,#1 SUBB DPTR,#1 DJNZ R2,EX

31、T DJNZ R2,EXT END END练练习习7 7:设设80318031单单片片机机外外部部RAMRAM从从1000H1000H单单元元开开始始存存放放100100个个无无符符号号8 8位位二二进进制制数数。要求编一子程序能把它们从大到小依次存入片内要求编一子程序能把它们从大到小依次存入片内RAMRAM从从50H50H开始的存储区。开始的存储区。问题:需考虑排序的算法问题:需考虑排序的算法汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计解:解:ORG 1000HORG 1000HMAX DATA 30HMAX DATA 30HMOV DPTR,#1000HMOV DPTR

32、,#1000HMOV R0,#50HMOV R0,#50HMOV R2,#100 ;MOV R2,#100 ;外循环次数外循环次数MOV MAX,#00HMOV MAX,#00H第19页,此课件共21页哦练练习习8 8(思思考考):已已知知内内部部RAMRAM单单元元MAMA和和MBMB中中分分别别有有两两个个有有符符号号数数,请请编编一一减减法法子子程程序序,并把差存入并把差存入RESULTRESULT和和RESULT+1RESULT+1中中问题:有符号数的减法,如(问题:有符号数的减法,如(-98-98)-98-98因为因为98D=62H=0110 0010B -98D=1001 1110

33、98D=62H=0110 0010B -98D=1001 1110则则 1001 1110B-0110 0010B=0011 1100B=3CH=3*16+12=60 1001 1110B-0110 0010B=0011 1100B=3CH=3*16+12=60,结果不对,结果不对算法:将带符号数进行两字节扩展,则高字节的各个位都与符号位相同算法:将带符号数进行两字节扩展,则高字节的各个位都与符号位相同 -98=1111 1111 1001 1110B -98=1111 1111 1001 1110B 98=0000 0000 0110 0010B 98=0000 0000 0110 0010

34、B (-98-98)-98=1111 1111 0011 1100B -98=1111 1111 0011 1100B 为负数,为负数,转换为转换为1010进制数:减进制数:减1 1取反得取反得0000 0000 1100 0100B=00C4H=1960000 0000 1100 0100B=00C4H=196 即结果为即结果为-196-196,与笔算结果一致。与笔算结果一致。汇汇汇汇编编编编语语语语言言言言程程程程序序序序设设设设计计计计第20页,此课件共21页哦本章小结本章小结掌握顺序程序、分支程序、循环和查表程掌握顺序程序、分支程序、循环和查表程序、子程序的设计序、子程序的设计第21页,此课件共21页哦

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁