新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用移位減法做4位16進制數除以4位16進制數運算

        用移位減法做4位16進制數除以4位16進制數運算

        作者: 時間:2013-04-03 來源:網絡 收藏
        ;只能
        ORG 0000H
        JMP A1
        ORG 002BH
        A1: MOV R0,#0FFH;被除數
        MOV R1,#0FFH;被除數
        MOV R2,#0;余數
        MOV R3,#0;余數
        MOV R4,#0;商
        MOV R5,#0;商
        MOV R6,#03H;除數
        MOV R7,#0E8H;除數
        MOV 30H,#16
        A2: MOV A,R1;先把移低字節移到高字節位
        RLC A;
        MOV R1,A;
        MOV A,R0;先處理高字節和接收低字節傳上來的位字節
        RLC A;
        MOV R0,A;
        MOV A,R3;把移出來的數處理
        RLC A;
        MOV R3,A;
        MOV A,R2;把移出來的數處理
        RLC A;
        MOV R2,A;
        A4:
        MOV A,R3;先減低字節8位
        CLR C;清C
        SUBB A,R7;A=A-C-R7
        MOV 32H,A;臨時保存余數
        MOV A,R2;再減高8位
        SUBB A,R6;不能清C低八位可能有借位
        JC A3;判斷大小大則保存余數到R2,R3
        MOV R3,32H;保存低八位余數
        MOV R2,A;保存高八位余數
        ;由于除數為4位16進制數所以余數有可能超過2位16進制數要用2個寄存器
        A3: CPL C;商處理
        MOV A,R5;先把存到低字節位
        RLC A;
        MOV R5,A;
        MOV A,R4;通過低字節存到高字節
        RLC A;
        MOV R4,A;
        DJNZ 30H,A2;判斷是否完成
        JMP $
        END
        ;思路--除數為4位16進制數就得要用2個寄存器
        ;
        ; R2 R3 R6 R7 R4 R5
        ;1、 00000000>00000001-00000011>11101000小于0,商值為00000000>00000000B
        ;2、 00000000>00000011-00000011>11101000小于0,商值為00000000>00000000B
        ;3、 00000000>00000111-00000011>11101000小于0,商值為00000000>00000000B
        ;4、 00000000>00001111-00000011>11101000小于0,商值為00000000>00000000B
        ;5、 00000000>00011111-00000011>11101000小于0,商值為00000000>00000000B
        ;6、 00000000>00111111-00000011>11101000小于0,商值為00000000>00000000B
        ;7、 00000000>01111111-00000011>11101000小于0,商值為00000000>00000000B
        ;8、 00000000>11111111-00000011>11101000小于0,商值為00000000>00000000B
        ;9、 00000001>11111111-00000011>11101000小于0,商值為00000000>00000000B
        ;10、00000011>11111111-00000011>11101000大于0,商值為00000000>00000001B;余數00010111B賦值給R3,00000000B賦值給R2
        ;11、00000000>00101111-00000011>11101000小于0,商值為00000000>00000010B
        ;12、00000000>01011111-00000011>11101000小于0,商值為00000000>00000100B
        ;13、00000000>10111111-00000011>11101000小于0,商值為00000000>00001000B
        ;14、00000001>01111111-00000011>11101000小于0,商值為00000000>00010000B
        ;15、00000010>11111111-00000011>11101000小于0,商值為00000000>00100000B
        ;16、00000100>11111111-00000011>11101000大于0,商值為00000000>01000001B,余數00010111B賦值給R3,00000010B賦值給R2
        ;至此算法完成


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 措勤县| 探索| 东丰县| 冷水江市| 万安县| 泽库县| 颍上县| 丰顺县| 佳木斯市| 隆昌县| 建湖县| 永州市| 稻城县| 拉萨市| 托里县| 榆社县| 河曲县| 葫芦岛市| 临漳县| 综艺| 柳州市| 南召县| 清水河县| 塔城市| 崇阳县| 读书| 嘉禾县| 吴江市| 道孚县| 汝州市| 吴旗县| 武宁县| 罗江县| 连城县| 宜章县| 兴业县| 米泉市| 内丘县| 锡林浩特市| 江永县| 山东省|