標題: [資料]51單片機十進制整數與二進制整數轉換匯編語言子程序 [打印本頁] 作者: Kxuan163 時間: 2020-12-24 15:30 標題: [資料]51單片機十進制整數與二進制整數轉換匯編語言子程序 ====================================
【4位十進制整數轉換為二進制整數子程序】
入口:十進制整數千位數RAM址存于R0,百位數、十位數、個位數RAM址依次加1;
返回值:轉換所得二進制整數存于R3(高字節)R4(低字節)。
DtoB: MOV R2, #4 ;;R2←遞減的循環次數初值
MOV A, @R0
MOV R4, A ;;R4←千位數
LP1 : MOV A, R4 ;;R3R4←(R3)(R4)*10
MOV B, #10
MUL AB
MOV R4, A
MOV B, #10
XCH A, B
XCH A, R3
MUL AB
ADD A, R3
XCH A, R4
INC R0 ;;RAM指針加1
ADD A, @R0 ;;R3R4←(R3)(R4)+((R0))
XCH A, R4
ADDC A, #0
MOV R3, A
DJNZ R2, LP1
RET
====================================
【雙字節二進制整數轉換為十進制整數BCD碼子程序】
入口:二進制整數高字節存于R2,低字節存于R3
返回值:轉換所得BCD碼由高位至低位依次存于R4,R5,R6
BtoD: MOV R7, #16 ;;R7←遞減的循環次數初值
MOV R4, #0 ;;結果寄存器清零
MOV R5, #0
MOV R6, #0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LP2: CLR C
MOV A, R3
RLC A
MOV R3, A
MOV A, R2
RLC A
MOV R2, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A, R6
ADDC A, R6
DA A
MOV R6, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R5, A
ADDC A, R5
DA
MOV R5, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R4, A
ADDC A, R4
DA
MOV R4, A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DJNZ R7, LP2
RET