首页 > 编程知识 正文

单片机实验汇编语言程序设计,易语言编写51单片机

时间:2023-05-03 19:14:47 阅读:116095 作者:1912

51单片机笔记(3)汇编语言编程4.1顺序程序4.2分支程序4.3循环程序4.4查表程序4.5子程序4.6集成编程4.6.1多字节

汇编语言程序设计

利用上述命令系统完成程序的编程

4.1顺序程序只需按正常顺序执行代码即可

4.2分支程序在判断语句中完成不同情况的跳转,在程序中总是按顺序执行,但可以通过跳转命令完成语句的跳转。

4.3循环程序同上,用跳转命令完成跳转即可

4.4查表程序在ROM上定义了一些结果,只有遇到相应的输入时才能直接在ROM上查询结果,查表程序可以以PC为基础,也可以以DPTR为基础

4.5子程序将LCALL和RET组合起来完成子程序的调用,其原理是保存与SP堆栈对应的指令的地址,通过推入和弹出原调用位置,如果不使用RET,也可以通过其他的跳转指令实现

4.6综合编程4.6.1多字节乘法器2字节无符号数乘法器,被乘数为R7R6,乘数为R5R4,R0为乘积结果的低地址。 @R0以后的单元格中存储结果)

将乘积累积结果分别用R1、R2、R3暂时保存

mul2: mov a、r6 mov b、r4 mul ab; 低2位乘法mov @r0,a; 下位为@r0所指位置mov r3,b; 暂时上位mov a、r7 mov b、r4 mul ab; 低位乘高位add a、r3 mov r3、a clr a addc a、b mov r2、a mov a、r6 mov b、r5 mul ab add a、r3 inc r0 mov @r0、a mov a、r2 addc a、b mov r2、a mov r1、 #0 jnc next inc r1next: mov a,r7 mov b,r5 mul ab add a,r2 inc r0 mov @r0,a mov a,r1 addc a,b inc r0 mov @r0,a 4.6.2多字节无符号

算法:

在R3R2中存储部分馀数通过部分馀数和被除数的共同左移操作将下一部分馀数与除数相除,商只能是1或0。 通过减法实现,如果部分馀数大于除数,则商为一个多四舍五入,首先判断最高有效位是否为1,然后乘以2判断是否大于除数R7R6(除数为0,over begin : clr a momor ) 循环计数器DIV0: ACALL RLC4; 被除数和部分馀数左移1位MOV F0、c; 保存换档操作的最上位状态CLR C MOV A、R2 SUBB A、R4 MOV R0、A MOV A、R3 SUBB A、R5 ANL C、/F0; 借位(不够)且换挡没有进位的JC NEXT; 将馀数的一部分作为除数,转移到NEXT,拉开差距舍弃INC R6; 以商移位为前提,商1 MOV R3,a; 差-部分剩余(高位a,低位R0 ) MOV A,R0 MOV R2,ANEXT: DJNZ R1,DIV0; 以下除法MOV A、R2 RLC A MOV R2、A MOV A、R3 RLC A MOV R3、A JC ROUND MOV A、R2 SUBB A、R4 MOV A、R3 SUBB A, r5 jcdoneround 3360 a call add1donnd溢出标志RETRLC4: CLR C MOV A、R6 RLC A MOV R6、A MOV A、R7 RLC A MOV R7、A MOV A、R2 RLC A MOV R2、a mov

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。