MOV A,bin ; 16進制數
MOV B,#100
DIV AB
ADD A,#0x30
MOV bai,A ;百位
MOV A,B
MOV B,#10
DIV AB
ADD A,#0x30
MOV shi,A ; 十位
MOV A,B
ADD A,#0x30
MOV ge,A ; 個位
C程序語句:
bai = bin/100 +0x30;
shi = bin%100/10 +0x30;
ge = bin%10 +0x30; 作者: lhxr 時間: 2018-11-8 11:46
非常謝謝sxhwdz ,按你的已經編譯通過作者: lhxr 時間: 2018-11-8 11:49
非常感謝大家的幫助作者: yzwzfyz 時間: 2018-11-8 13:24
;格式轉換類BIN→BCD----
BINTOBCDA1: DB 00H, 16H, 32H, 48H, 64H, 80H, 96H, 12H
;BINTOBCDA.ASM:單字節BIN→BCD,A→A。(A.7自動去除,低7位<100)
;影響:PSW,A,B。
BINTOBCDA: PUSH DPH
PUSH DPL
PUSH ACC
SWAP A
ANL A, #C_07H
MOV DPTR, #BINTOBCDA1
MOVC A, @A+DPTR
MOV DPL, A
POP ACC
ANL A, #C_0FH
ADD A, #0
DA A
ADD A, DPL
DA A
POP DPL
POP DPH
RET
;A_TOBCD_BA.ASM:單字節BIN→BCD,A→BA。
;影響:PSW,A,B。
A_TOBCD_BA: PUSH ACC
ANL A, #C_3FH
CALL BINTOBCDA ;先處理低6位<64
;再處理高二位
POP B
ANL B, #11000000B ;只留兩個可能產生>99的位
JBC B.6, A_BCD_BA1 ;需要+64
JMP A_BCD_BA2
;B.6=1則BA+64
A_BCD_BA1: ADD A, #C_64H
DA A
JNC A_BCD_BA2
INC B ;進位到百
A_BCD_BA2: JBC B.7, A_BCD_BA3 ;需要+128
JMP A_BCD_BA4
;B.7=1則BA+128
A_BCD_BA3: ADD A, #C_28H
DA A
XCH A, B ;百位交換到A
ADDC A, #C_1 ;百位+100并帶進位
XCH A, B ;百位換回
A_BCD_BA4: RET 作者: yzwzfyz 時間: 2018-11-8 13:26
需要你增加定義:
C_XX作者: yzwzfyz 時間: 2018-11-8 13:28
需要你增加定義:
C_?? EQU ?? ;??是數字。