AVR 乘法子程序(16位乘16位)



说明:
1:此子程序的两个乘数分别放于XHXL和ZHZL,结果放在ZLYHYLXH(至于为什么这样放的理由是与我的16/24/32/40位除以16位的子程序有关)

2:子程序运算过程中所用过的寄存器有:R6,R7.因此,如果你的程序中别的地方有用到,请在进入子程序前保存好这些值,以防丢失.

程序代码 程序代码

MUL16:
    MUL XL,ZL    ;ZLYHYLXH=XHXL*ZHZL
    MOVW YL,R0
    MUL XH,ZL
    MOVW R6,R0
    ADD YH,R6
    ADC R7,ZERO
    CLR ZL
    MUL XL,ZH
    ADD YH,R0
    ADC R7,R1
    ADC ZL,ZERO
    MUL XH,ZH
    ADD R7,R0
    ADC ZL,R1
    MOV XH,YL
    MOV YL,YH
    MOV YH,R7
    RET




文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 编程
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.