forked from jmatzen/leventhal-6809
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path6809_BN2HEX.s
62 lines (56 loc) · 1.29 KB
/
6809_BN2HEX.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
; Title: Binary to Hex ASCII
;
; Name: BN2HEX
;
; Purpose: Converts one byte of binary data to two ASCII characters
;
; Entry: Register A = Binary data
;
; Exit: Register A = ASCII more significant digit
; Register B = ASCII Less significant digit
;
; Registers Used: A,B,CC
;
; Time: Approximately 37 cycles
;
; Size: Program 27 bytes
; Data None
;
BN2HEX:
;
; CONVERT MORE SIGNIFICANT DIGIT TO ASCII
;
TFR A,B ; SAVE ORIGINAL BINARY VALUE MOVE HIGH DIGIT TO LOW DIGIT
LSRA
LSRA
LSRA
LSRA
CMPA #9
BLS AD30 ; BRANCH IF HIGH DIGIT IS DECIMAL
ADDA #7 ; ELSE ADD 7 S0 AFTER ADDING '0' THE
; CHARACTER WILL BE IN 'A'..'F'
AD30: ADDA #'0' ; ADD ASCII 0 TO MAKE A CHARACTER
;
; CONVERT LESS SIGNIFICANT DIGIT TO ASCII
;
ANDB #$0F ; MASK OFF LOW DIGIT
CMPB #9
BLS AD30LD ; BRANCH IF LOW DIGIT IS DECIMAL
ADDB #7 ; ELSE ADD 7 SO AFTER ADDING '0' THE
; CHARACTER WILL BE IN 'A'..'F'
AD30LD: ADDB #'0' ; ADD ASCII 0 TO MAKE A CHARACTER
RTS
;
; SAMPLE EXECUTION
;
SC1C:
; CONVERT 0 TO ASCII '00'
LDA #0
JSR BN2HEX ; A='0'=30H, B='0'=30H
; CONVERT FF TO ASCII 'FF'
LDA #$FF
JSR BN2HEX ; A='F'=46H, B='F'=46H
; CONVERT 23 TO ASCII '23'
LDA #$23
JSR BN2HEX ; A='2'=32H, B='3'=33H
END