hacer_lista:
; solicitar memoria
@GetBlock 2
.if carry?
mostrar "error de obtención de memoria$"
jmp salir
.endif
; verificar si es el inicio de la lista dir_incio_lista ==NULL
.if dir_incio_lista==NULL
mov dir_incio_lista,ax ; colocar esta dirección como el inicio de la lista
mov tmp_dir,ax ; recordar ultimo bloque obtenido
mov es,ax ; apuntar hacia esa parte de la memoria
mov dx,0
mov es:[0],dx ; poner un cero en primeros dos bytes porque es el fin de la lista
nl
mostrar "bloque unicial$"
; usar esa parte de la memoria
;call capturar
.else; y si no es el ultimo bloque
; actualizar dirección en bloque anterior
push ax ; almacenar esta dirección en la pila
mov ax,tmp_dir; obtener dirección del bloque anterior
mov es,ax ; apuntar hacia esa parte
pop ax ; recuperar dirección obtenida
;mov es:[si],ax ; guardar como dirección del bloque siguiente
mov es:[0],ax
; actualizar dirección del ultimo bloque
mov tmp_dir,ax ; recordar ultimo bloque obtenido
mov es,ax ; apuntar hacia esa parte de la memoria
mov dx,0
mov es:[0],dx ; poner un cero en primeros dos bytes porque es el fin de la lista
nl
mostrar " otro bloque mas$"
; usar esa parte de la memoria
;call capturar
.endif
nl
mostrar "desea otro bloque mas? s/n$"
@GetChar
.if al=='s'
jmp hacer_lista