80C51汇编语言
第4章 80C51的汇编语言程序设计 单片机应用系统由硬件系统和应用程序构成 4.1 程序编制的方法和技巧 任务分析 流程图符号 强化模块观念 标号(即符号地址) 操作数 4.3 基本程序结构 一般不影响标志寄存器PSW的状态。 4.3 基本程序结构 (无分支、无循环) (单分支、双分支、多分支) (2种:先执行,后判断;先判断,后执行) 4.4 子程序及其调用 减法子程序 编写多字节无符号数的减法子程序 设2个多字节无符号数的低字节地址分别存于R0R1中,低字节在高地址单元。相减后的差存放在减数原来的位置 子程序入口:(R0)=被减数低字节地址 (R1)=减数低字节地址 (R7)=字节数 子程序出口: (R1)=差的高字节地址(起始地址) NSUB: CLR C NSUB1:MOV A, @R0 SUBB A,@R1 MOV @R1,A DEC R0 DEC R1 DJNZ R7,NSUB1 INC R1 RET 乘法子程序 编写双字节无符号数的乘法子程序 设双字节的无符号被乘数存放在R2、R3中,乘数存放在R4、R5中,R0指向积的高字节 子程序入口:( R2、R3)=被乘数 (R4、R5)=乘数 (R0)=预存放积的低字节的单元地址 子程序出口: (R0)=积的高字节的单元地址 MOV A, R2MOV B, R5MUL ABINC R0INC R0ACALL RADD MOV A, R2MOV B, R4MUL ABINC R0ACALL RADDINC R0RET MOV A, R3 MOV B, R5 MUL AB ACALL RADD MOV A, R3 MOV B, R4 MUL AB INC R0 ACALL RADD 查表子程序 利用子程序实现c=a2+b2 设a、b、c分别存放于内部RAM的30H、31H、32H单元中 子程序入口:(A)=预平方数 子程序出口:(A)=平方值 SQR: MOV DPTR, #TAB MOVC A, @A+DPTR RET TAB:DB 0,1,4,9,16,25,36,49,64,81 十六进制数转换为ASCII码 将1位十六进制数(即四位二进制数)转换为相应 的ASCII码。设十六进制数存放在R0中,转换后的ASCII码存放在R2中 子程序入口:(R0)=十六进制数 子程序出口:(R2)=ASCII码 十六进制数转换为ASCII码 多十六进制数转换为ASCII码。 子程序入口:(R0)=十六进制数低字节地址 (R2)=字节数 子程序出口:(R0)=十六进制数高字节地址 (R1)=ASCII码的高位地址 MOV A,@R0 ANL A,#0FH ADDC A,#16 MOVC A,@A+PC MOV @R1,A INC R1 MOV A,@R0 SWAP A ANL A#07H ADD A,#7 MOVC A,@A+PC MOV @R1,A INC R0 INC R1 DJNZ R2,LP DEC R1 RET ASC:DB 30H,31H,32H--- 二进制数与十进制数之间的转换 双字节二进制数转换为BCD码 设(R2R3)为双字节二进制数,(R4R5R6)为转换完的压缩型BCD码 子程序入口:(R2R3)=十六位二进制数 子程序出口:(R4R5R6)=转换完的压缩型BCD码 D=b15*215+b14*214+…+b1*2+b0 =(((b15*2)+b14)*2+…+b1)*2+b0 =((((0*2+b15)*2)+b14)*2+…+b1)*2+b0 CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#16 CLR C MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A 延时子程序 1m延时子程序 4.5 简单I/O设备的并口直接驱动示例 验证程序段 MAIN:MOV A,20H ; SWAP A PUSH ACC ;预转换的数据(在低半
如果觉得《80c51定时1秒汇编语言 80C51汇编语言.ppt》对你有帮助,请点赞、收藏,并留下你的观点哦!