新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用移位減法做4位16進(jìn)制數(shù)除以4位16進(jìn)制數(shù)運(yùn)算

        用移位減法做4位16進(jìn)制數(shù)除以4位16進(jìn)制數(shù)運(yùn)算

        作者: 時(shí)間:2013-04-03 來源:網(wǎng)絡(luò) 收藏
        ;只能
        ORG 0000H
        JMP A1
        ORG 002BH
        A1: MOV R0,#0FFH;被除數(shù)
        MOV R1,#0FFH;被除數(shù)
        MOV R2,#0;余數(shù)
        MOV R3,#0;余數(shù)
        MOV R4,#0;商
        MOV R5,#0;商
        MOV R6,#03H;除數(shù)
        MOV R7,#0E8H;除數(shù)
        MOV 30H,#16
        A2: MOV A,R1;先把移低字節(jié)移到高字節(jié)位
        RLC A;
        MOV R1,A;
        MOV A,R0;先處理高字節(jié)和接收低字節(jié)傳上來的位字節(jié)
        RLC A;
        MOV R0,A;
        MOV A,R3;把移出來的數(shù)處理
        RLC A;
        MOV R3,A;
        MOV A,R2;把移出來的數(shù)處理
        RLC A;
        MOV R2,A;
        A4:
        MOV A,R3;先減低字節(jié)8位
        CLR C;清C
        SUBB A,R7;A=A-C-R7
        MOV 32H,A;臨時(shí)保存余數(shù)
        MOV A,R2;再減高8位
        SUBB A,R6;不能清C低八位可能有借位
        JC A3;判斷大小大則保存余數(shù)到R2,R3
        MOV R3,32H;保存低八位余數(shù)
        MOV R2,A;保存高八位余數(shù)
        ;由于除數(shù)為4位16進(jìn)制數(shù)所以余數(shù)有可能超過2位16進(jìn)制數(shù)要用2個(gè)寄存器
        A3: CPL C;商處理
        MOV A,R5;先把存到低字節(jié)位
        RLC A;
        MOV R5,A;
        MOV A,R4;通過低字節(jié)存到高字節(jié)
        RLC A;
        MOV R4,A;
        DJNZ 30H,A2;判斷是否完成
        JMP $
        END
        ;思路--除數(shù)為4位16進(jìn)制數(shù)就得要用2個(gè)寄存器
        ;
        ; 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;余數(shù)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,余數(shù)00010111B賦值給R3,00000010B賦值給R2
        ;至此算法完成


        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 丁青县| 吉隆县| 绥滨县| 天等县| 华安县| 延庆县| 淮安市| 乌兰浩特市| 庆云县| 定西市| 通道| 清原| 芦溪县| 漠河县| 东海县| 长泰县| 黄山市| 上犹县| 江源县| 永和县| 乌拉特中旗| 瑞金市| 济宁市| 潜山县| 翁牛特旗| 洛扎县| 开平市| 海兴县| 布尔津县| 井研县| 农安县| 黑水县| 高阳县| 来宾市| 中西区| 若羌县| 曲阳县| 东乌珠穆沁旗| 西宁市| 乌恰县| 司法|