汇编语言的16位除法子程序

发布者:柔情细语最新更新时间:2018-05-08 来源: eefocus关键字:汇编语言  16位除法 手机看文章 扫描二维码
随时随地手机看文章

应邀写个汇编语言的除法子程序。

编写除法子程序,有两种算法,移位相减的方法和循环相减的方法。

移位相减的方法是仿照人们做除法的竖式编写,执行速度较快,但是计算的原理,一般人不好理解,难以让大家推广到更多的字节。故此下面采用循环相减的思路来编写程序。

设计思路:所谓除法,就是要求出在被除数中,含有多少个除数。那么就用被除数连续的减去除数,直到不够减为止,够减的次数,就是商,不够减的数值,就是余数。

下列程序,对数值范围的要求很宽松,被除数、除数和商,都可以是16位数,这比网上常见的16位除8位的除法程序,适用面要广得多。

注意,除数为0的问题,应该在主程序中进行检测。

;-------------------------------------

;16位/16位的子程序

;被除数:R2R3、除数:R4R5;商:DPTR、余数:R2R3。

;占用:A、B。

;-------------------------------------

R23DIVR45:

    MOV   DPTR, #0

D_LOOP:

    CLR   C

    MOV   A, R3

    SUBB A, R5

    MOV   B, A

    MOV   A, R2

    SUBB A, R4             ;R2R3-R4R5

    JC   DIV_E              ;有借位转移

    INC   DPTR

    MOV   R3, B

    MOV   R2, A

    SJMP D_LOOP

DIV_E:

    RET                      ;不够减就结束

;-------------------------------------

;完


对于R2R3中的余数,还应该有个“四舍五入”的程序。

呵呵,我来抛砖,不知那位读者可以还玉?


关键字:汇编语言  16位除法 引用地址:汇编语言的16位除法子程序

上一篇:51单片机对两位 BCD拨盘 的读出程序
下一篇:单片机同一IO口输出两组数组

推荐阅读最新更新时间:2024-03-16 16:02

单片机60S倒计时汇编语言
ORG 0000H AJMP MAIN ORG 000BH AJMP INTT0 ORG 0030H MAIN: MOV R7,#60 MOV R6,#00H MOV DPTR,#TABLE MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH ;设置定时器工作方式、初值 SETB EA SETB ET0 SETB TR0 NEXT: MOV A,R7 MOV B,#0AH DIV AB SETB P1.3 MOVC A,@A+DPTR MOV P0,A CLR P1.4 ;开启shi位显示 ACALL DELAY MOV A,B
[单片机]
ARM汇编语言入门(二)
数据类型 与高级编程语言类似,ARM也支持操作不同的数据类型。 我们载入(load)或存储(store)的数据类型可以是有符号或无符号的字、半字或字节。这些数据类型的扩展符是:-h或-sh代表半字,-b和-sb代表字节,其中字没有扩展符号。有符号和无符号的区别: 有符号数据类型可以存储正数和负数,因此表示的值范围更小。 无符号数据类型可以存储大的正数(包含0),不能存储符数因此可以表示更大的数。 载入和存储指令使用数据类型: ldr = Load Word ldrh = Load unsigned Half Word ldrsh = Load signed Half Word ldrb = Load unsigned
[单片机]
ARM<font color='red'>汇编语言</font>入门(二)
不用定时器和汇编语言,只用C语言实现精确无误的延时
对于51定时器,却是有点少,有时候不经意间就被用完了,而实现定时又TM神坑了!一般的解决方案有直接上汇编,一条语句的执行时间就是一个机器周期,所以多写几个就实现了完美的定时功能。可是可是……..又有多少学51的会汇编呢?呵呵哒 所以来分享一个神好用的方法,C语言的while和nop结合使用实现精确延时 上调试代码: #include #include #define TIME 164//此处是需要不断调节的改变时间的数值 //164是少4个机器周期,165是多了2个机器周期 /* ∵晶振=12MHz ∴一条指令用时=1/(12/12)=10^(-6)s=1us */ //想办法补偿,而不是减少 void del
[单片机]
不用定时器和<font color='red'>汇编语言</font>,只用C语言实现精确无误的延时
汇编语言做一个看门狗测试
用STC的MCU的IO方式控制74HC595驱动8位数码管。 ; 用户可以修改宏来选择时钟频率. ; 显示效果为: 显示秒计数, 5秒后不喂狗, 等复位. Fosc_KHZ EQU 22118 ;22118KHZ STACK_POIRTER EQU 0D0H ; 堆栈开始地址 DIS_DOT EQU 020H DIS_BLACK EQU 010H DIS_ EQU 011H AUXR DATA 08EH P4 DATA 0C0H P5 DATA 0C8H P0M1 DATA 0x93 ; P0M0 DATA 0x94 ; P1M1 DATA 0x91 ; P1M0 DATA 0x92 ; P2M1 DATA 0x95 ; P2M0
[单片机]
51 汇编语言编程:变速计数
;用51单片机控制 2位数码管动态显示 00 ~ 99。 ;从 00 开始显示,显示数字每隔一段时间加 1,一直到 99,然后回到 00。 ;从 00 到 10 每隔 100ms 加 1; ;从 10 到 20 每隔 200ms 加 1; ;其它依此类推; ;从 90 到 99 然后到 00 每隔 1s 加 1。 ;做而论道用汇编语言编写的程序如下: ORG 0000H JMP MAIN ORG 000BH JMP T0_INT MAIN: MOV TMOD, #01H MOV TH0, #HIGH(65536-50000) MOV TL0, #LOW(65536-
[单片机]
51 <font color='red'>汇编语言</font>编程:变速计数
ATPCS ARM体系中汇编语言和c语言之间参数传递规则
ATPCS   ATPCS即ARM-THUMB procedure call standard的简称。   PCS规定了应用程序的函数可以如何分开地写,分开地编译,最后将它们连接在一起,所以它实际上定义了一套有关过程(函数)调用者与被调用者之间的协议。   PCS强制实现如下约定:调用函数如何传递参数(即压栈方法,以何种方式存放参数),被调用函数如何获取参数,以何种方式传递函数返回值。   PCS的制订是一系列指标的 tradeoff(折衷) (因为很大程度上涉及系统的一些性能),如会涉及生成代码的大小,调试功能的支持,函数调用上下文处理速度以及内存消耗。当然,通过编译器的支持可以让生成的代码有不同的特性,如gcc编
[单片机]
51汇编语言指令集
符号定义表 符号 含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR (80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11
[单片机]
汇编语言 条件转移指令JCXZ
JCXZ若CX为0跳转 指令格式:JCXZ 标号 指令功能:若CX寄存器为0,则转义到指令中标号所指定的地址处,否则将往下顺序执行,它不对CX寄存器进行自动减1的操作。 assume cs:code, ds:data data segment db 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 data ends code segment start: mov bx, data mov ds, bx mov bx, 0 s: mov cx, 0 mov cl, ds: jcxz ok ; x = 0时,下面的2行代码不会被执行,会跳转到 ok
[单片机]
<font color='red'>汇编语言</font> 条件转移指令JCXZ
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty