28 CHAPTER 2. INTRODUCTION TO LOOPING
>MM D000
D000 23 29
>C C000
29 41
P-C04B Y-AAAA X-D002 A-20 B-AA C-D9 S-004A
>
Using Loops
Here is a version using loops. We first copy A to B. Then in a loop check if B is
greater than or equal to 10. If so, we subtract 10 from B and add 6 to A. If not,
we are done.
;;;;;;;;;;;;;;;;;;;;;;;;; START OF HEX2BCD ;;;;;;;;;;;;;;;
;
; THIS PROGRAM TAKES THE VALUE IN LOCATION $D000 AND
; CONVERTS IT TO ITS BCD REPRESENTATION AND STORES THE
; RESULT IN LOCATION $D001
;
; THE NUMBER IN LOCATION $D000 SHOULD BE BETWEEN 0 AND 99 ($63)
; NUMBERS BIGGER THAN 99 ARE IGNORED AND LEFT UNCHANGED.
; THE PROGRAM USES LOOPS AND REPEATED SUBTRACTION
OUT1BYT EQU $FFBB
OUT1BSP EQU $FFBE
ORG $C000
LDAA $D000
TAB *COPY A TO B
LT
CMPB #10 *IS B < 10
BLO DONE *IF SO WE ARE DONE
SUBB #10 *B <- B-10
ADDA #6 *A <- A+6
BRA LT
Comentarios a estos manuales