新聞中心

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

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

        作者: 時間:2016-11-30 來源:網絡 收藏
        ORG0000H
        JMPA1
        ORG002BH
        A1:MOVR0,#0;數據處理寄存器(乘積高八位)
        MOVR1,#255;被乘數(乘積低八位)
        MOVR2,#255;乘數
        MOV30H,#8;循環次數--8位二進制數相乘8次4位則4次
        A2:
        CLRC;清C
        MOVA,R1;
        JNBACC.0,A3;判斷被乘數第0位是否為0是則不用相加
        MOVA,R0;不為0則相加
        ADDA,R2;乘數與處理后數據相加
        MOVR0,A;數據存回數據處理寄存器

        A3:MOVA,R0;右移一位
        RRCA;相加可能溢出所以用RRC
        MOVR0,A;
        MOVA,R1;
        RRCA;將處理后的數移到被乘數
        MOVR1,A;
        DJNZ30H,A2;是否完成
        NOP
        NOP
        NOP
        JMP$
        ;思路
        ; R0處理數 R1被乘數 被乘數第0位為1相加 相加存到R0
        ; 00000000 11111111 1 00000000+11111111=11111111
        ;1 01111111 11111111 1 01111111+11111111=101111110
        ;2 10111111 01111111 1 10111111+11111111=110111110
        ;3 11011111 00111111 1 11011111+11111111=111011110
        ;4 11101111 00011111 1 11101111+11111111=111101110
        ;5 11110111 00001111 1 11110111+11111111=111110110
        ;6 11111011 00000111 1 11111011+11111111=111111010
        ;7 11111101 00000011 1 11111101+11111111=111111100
        ;8 11111110 00000001
        END


        關鍵詞: 右移加法乘法運

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乐昌市| 呼玛县| 芜湖县| 水富县| 太保市| 揭东县| 石城县| 锦屏县| 泰来县| 剑河县| 开江县| 深州市| 屏南县| 霞浦县| 湘阴县| 利川市| 新平| 江川县| 隆德县| 哈密市| 墨竹工卡县| 阿拉善右旗| 高要市| 醴陵市| 镇赉县| 丹东市| 准格尔旗| 新昌县| 崇文区| 台东市| 德化县| 家居| 天津市| 余庆县| 营口市| 大冶市| 定日县| 黄浦区| 商丘市| 丰顺县| 策勒县|