Microordenadores - Retroinformática y placas modernas de desarrollo

Nueva placa Sugarless +2 para adaptar un ZX-Uno a la caja de un ZX Spectrum +2A/+2B/+3

Hola mundo en ensamblador Z80 para ZX-Spectrum
30 de Noviembre de 2017
Etiquetas:

Un simple "Hola mundo" en ensamblador Z80 para ZX Spectrum.

; Hello World!
; Compile with pasmo --tapbas hello.asm hello.tap

ORG     50000

        LD HL, message

loop:

        LD A, (HL)
        CP 0				; compare A to 0 (end of string)
        JR z,fin
        RST 16			; print ASCII character at A 
        INC HL 
        JP loop

fin:

        RET				; end program

message	DB	"Hello world!",0

END 50000

Aquí una versión mejorada gracias a las sugerencias de Uto:

ORG     50000

        LD HL, message

loop:

        LD A, (HL)
        OR A
        RET z  
        RST 16
        INC HL 
        JP loop

message         DB      "Hello world!",0

END 50000

mcleod_ideafix recomienda abrir el canal 2 ya que si no (copio sus palabras) el "Hola mundo" aparecerá en las dos lineas inferiores de la pantalla y no se podrá leer a menos que se haga PRINT USR o se ponga un PAUSE 0 después del RANDOMIZE USR. No tengo ni idea de lo que significa aunque si lo dice mcleod seguro que tiene sentido :-). El código queda así:

ORG     50000
        ld a,-2       ;si, se pone el numero de canal en negativo
        call 1601h    ;CHAN_OPEN
       
        LD HL, message

loop:

        LD A, (HL)
        OR A
        RET z 
        RST 16
        INC HL
        JP loop

message         DB      "Hello world!",0

END 50000