新聞中心

        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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 景德镇市| 嘉义市| 三原县| 兴国县| 黄石市| 繁峙县| 葫芦岛市| 海阳市| 麦盖提县| 张家界市| 双鸭山市| 格尔木市| 东阳市| 大厂| 五莲县| 聊城市| 石泉县| 高清| 长岛县| 阳朔县| 清丰县| 申扎县| 嘉黎县| 泸定县| 普定县| 息烽县| 岗巴县| 宁强县| 会理县| 建宁县| 永春县| 墨竹工卡县| 内黄县| 海城市| 景谷| 湖口县| 大同县| 黄龙县| 许昌市| 旺苍县| 五峰|