📄 bin.asm
字号:
; +-------------------------------------------------------------------------+
; Purpose: Routine to convert a 16bit binary number in ASCII
; INPUT : R2 (Lsb) and R3 (Msb) ( binary)
; OUPUT : (msb) 30h,31h,32h,33h,34h (lsb) (internal RAM address) (ASCII)
; by: Herlambang Aribowo
; D3 Instrumentasi dan elektronika UNDIP, Semarang, Jawa tengah, Indonesia
; contact : cah_imuth@yahoo.com
; Phone : +6281328828042
; +-------------------------------------------------------------------------+
;
; Contoh:
;
; START:
; MOV R2,#low(1234)
; MOV R3,#high(1234)
; LCALL BINTOASC
;
; in 30h until 34h of internal RAM will be :'0','1',' 2',','3','4' ( ASCII)
BINTOASC:
MOV R0,#30h ; R0 = POUT
MOV DPTR,#TAB ; R=TAB(P)
COM1:
CLR A ; P <- 0
MOVC A,@A+DPTR ; R <- TAB(P)
MOV R7,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R6,A
MOV R4,#'0' ; C <- '0'
SOMA: ; N <- N-R
CLR C ;
MOV A,R2 ;
SUBB A,R6 ;
MOV R2,A ;
MOV A,R3 ;
SUBB A,R7 ;
MOV R3,A ;
JC SAIDA ; If < 0 goto SAIDA
INC R4 ; If >0 then C <- C +1
SJMP SOMA ; goto SOMA
SAIDA:
MOV A,R4
MOV @R0,A ; TABOUT (POUT) <- C
MOV A,R2
ADD A,R6 ; N=N+R
MOV R2,A
MOV A,R3
ADDC A,R7
MOV R3,A
INC R0 ; PSAIDA=PSAIDA +1
CLR A
MOVC A,@A+DPTR
CJNE A,#1,INCREMENTA ; TAB(P) = 1 ?
RET ; If yes, END
INCREMENTA: ; If No, P <- P+1
INC DPTR
LJMP COM1 ; goto COM1
TAB:
Dw 10000
Dw 1000
Dw 100
Dw 10
Dw 1
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -