回覆列表
  • 1 # 疏星淡月半島素兮

    MOVR0,TH1

    MOVR1,TL1

    CALLHEX2BCD;呼叫子程式把R0R1中的數字,轉換成BCD碼,送到R2R3R4

    ;-------下面,把萬千百十個位,分別存入R4R3R2R1R0

    MOVA,R4

    MOVB,#16

    DIVAB;除以16,目的是分離出高、低四位

    MOVR1,A;存放十位

    MOVR0,B;存放個位

    ;

    MOVA,R2

    MOVR4,A;存放萬位

    ;

    MOVA,R3

    MOVB,#16

    DIVAB

    MOVR3,A

    MOVR2,B

    SJMP$;到此,完成了題目要求

    ;------------------------------------------------------------------

    ;兩個位元組的二進位制數轉換成BCD碼的程式如下:

    ;功能:16位二進位制數變換成為BCD碼;

    ;入口:R0R1中是16位二進位制數,其中R0中是高8位;

    ;出口:R2R3R4中是BCD碼,其中R2中是萬位,R3中是千、百位,R4中是十、個位。

    HEX2BCD:

    CLRA

    MOVR2,A;先清零

    MOVR3,A

    MOVR4,A

    MOVR5,#16;共轉換十六位數

    LOOP:

    CLRC

    MOVA,R1;從待轉換數的高階移出一位到Cy

    RLCA

    MOVR1,A

    MOVA,R0

    RLCA

    MOVR0,A

    MOVA,R4;送到BCD碼的低端

    ADDCA,R4;帶進位加。自身相加,相當於左移一位

    DAA;十進位制調整,變成BCD碼

    MOVR4,A

    MOVA,R3

    ADDCA,R3

    DAA

    MOVR3,A

    MOVA,R2

    ADDCA,R2

    MOVR2,A

    DJNZR5,LOOP;共轉換十六位數

    RET

  • 中秋節和大豐收的關聯?
  • 傳說中的河童是什麼怪物?