
Сообщение от
nzeemin
Для комплекта ещё - вариант из Stop the Express для MS-0515.
Вариант из Stop the Express занимает 31 слово (в десятичной системе счисления).
Я делал быстрый (без CALLов) вариант со степенями 10. Из полезного: не печатает лидирующие нули, добавляет в конец символ конца строки.
Размер 25 слов:
Код:
; Fast DECIMAL by Manwe
; input: R0 - number
; R1 - pointer to output text string
DECIM: MOV #TEN,R5 ; table address
1: CMP (R5)+,R0 ; skip leading zeros
BHI 1 ; branch if higher, for 16-bit not signed
MOV -(R5),R3
BEQ 4 ; if less then 10
2: MOV #57,R4 ; 0 symbol in ASCII codepage - 1
3: INC R4 ; count digits
SUB R3,R0
BHIS 3 ; branch if higher or same, for 16-bit not signed
MOVB R4,(R1)+ ; print R4
ADD (R5)+,R0
MOV (R5),R3
BNE 2
4: ADD #60,R0 ; 0 symbol in ASCII codepage
MOVB R0,(R1)+ ; print R0
CLRB (R1) ; write end marker of the text string
RET
TEN: .WORD 10000.,1000.,100.,10.,0