新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用右移加法做乘法運算(65535*65535)

        用右移加法做乘法運算(65535*65535)

        作者: 時間:2013-04-03 來源:網絡 收藏
        ORG0000H
        JMPA1
        ORG002BH
        A1:MOVR0,#0;數據處理高位(乘積高8位)
        MOVR1,#0;數據處理低位(乘積高中8位)
        MOVR2,#255;被乘數高位(乘積低中8位)
        MOVR3,#255;被乘數低位(乘積低8位)
        MOVR4,#255;乘數高位
        MOVR5,#255;乘數低位
        MOV30H,#16;循環次數--8位二進制數相乘8次4位則4次
        A2:
        CLRC;清C
        MOVA,R3;
        JNBACC.0,A3;判斷被乘數第0位是否為0是則不用相加
        MOVA,R1;不為0則相加
        ADDA,R5;乘數低位與處理后數據低位相加
        MOVR1,A;數據存回數據處理低位
        MOVA,R0
        ADDCA,R4;乘數低位與處理后數據高位相加上面相加可能溢出所以用ADDC
        MOVR0,A;數據存回數據處理高位寄存器
        A3:MOVA,R0;先右移高位
        RRCA;相加可能溢出所以用RRC
        MOVR0,A;
        MOVA,R1;在右移低位
        RRCA;RRC把高位的數移入低位
        MOVR1,A
        MOVA,R2;
        RRCA;將處理后的數移到被乘數高位
        MOVR2,A;
        MOVA,R3;
        RRCA;將處理后的數移到被乘數低位
        MOVR3,A;
        DJNZ30H,A2;是否完成
        NOP
        NOP
        NOP
        JMP$
        END


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沅陵县| 澜沧| 杭州市| 双鸭山市| 郎溪县| 凤翔县| 五华县| 晋中市| 神农架林区| 西昌市| 浮山县| 闽清县| 西峡县| 大埔县| 盐源县| 静海县| 繁峙县| 丹东市| 和龙市| 清新县| 信阳市| 固镇县| 肇州县| 高淳县| 孝义市| 武威市| 崇左市| 武夷山市| 盘锦市| 巩留县| 寿宁县| 宜君县| 泰兴市| 双流县| 南皮县| 上高县| 开封县| 雷山县| 平罗县| 涿州市| 太仓市|