RosettaCodeData/Task/Integer-sequence/Z80-Assembly/integer-sequence-1.z80

49 lines
616 B
Z80 Assembly

org &1000
PrintChar equ &BB5A
ld hl,1 ;START AT ONE
main:
push hl
;PRINT HIGH BYTE
ld a,h
call ShowHex
;THEN PRINT LOW BYTE
ld a,l
call ShowHex
;NEW LINE
ld a,13
call PrintChar
ld a,10
call PrintChar
pop hl
;NEXT HL
inc hl
;COMPARE HL TO ZERO
ld a,h
or l
jr nz,main ;IF NOT ZERO, REPEAT
ret ;RETURN TO BASIC
ShowHex:
push af
and %11110000
rrca
rrca
rrca
rrca
call PrintHexChar
pop af
and %00001111
;call PrintHexChar
;execution flows into it naturally.
PrintHexChar:
;this converts hexadecimal to ascii.
or a ;Clear Carry Flag
daa
add a,&F0
adc a,&40
jp PrintChar
;ret