; Demostracion de datos y variables en memoria ORG 50000 ; Primero vamos a copiar unos datos a la videomemoria. ld hl, datos ; origen ld de, 16384 ; destino ld bc, (longitud_datos) ; longitud (BC son 2 bytes, var es DW) ldir ld de, 10 ; D = 0, E = 10 call CursorAt ld de, texto call PrintString ; Imprimimos cadena ; Ahora vamos a sumar 1 a cada caracter de la cadena, ; un total de "repeticiones" veces: ld hl, texto ; Origen ld a, (repeticiones) ; A ld b, a ; B = A (para djnz) bucle: inc (hl) ; Incrementamos el valor apuntado por HL inc hl ; Siguiente posicion de la cadena djnz bucle ; Repetir "variable (27)" veces ld de, texto call PrintString ; Imprimimos cadena transformada ld a, 1 ld (fin), a ; Cambiamos valor de variable ld bc, (variable_16bit) ; Ahora BC vale 12345 call PrintNum ; imprimir su valor call PrintSpace ld a, (fin) ; Ahora BC debería valer 1 ld b, 0 ld c, a ; BC = A (B=0 y C=A) call PrintNum ret datos DB 0, $ff, $ff, 0, $ff, 12, 0, 0, 0, 10, 255 longitud_datos DW 10 variable_16bit DW 12345 fin DB 0 repeticiones DB 27 texto DB "Esto es una cadena de texto", _CR, _CR, _EOS ;; Incluimos nuestra libreria aqui INCLUDE "utils.asm" END 50000