Os paso el codigo
Código
[BITS 16] [ORG 0x07C] ; Uno de los fallos estaba aqui , puse mal esta direccion ; Entry point jmp main ; Rutinas putchar: ; He comprobado que la rutina putchar funciona perfectamente , no la revises ; Imprime el caracter guardado en el registro al mov ah , 0x0E mov bh , 0x00 mov bl , 0x07 int 10h retn putstr: ; Y el otro fallo estaba aqui , que no me asegure de que lodsb incrementara SI ; Abajo del post esta el codigo corregido lodsb ; Lee 1 caracter del string cmp al , 0x00 jz retornar call putchar jmp putstr retornar: retn main: ; El problema PUEDE estar aqui mov si , msgTexto call putstr ; Declaraciones msgTexto db 0x0D, 0x0A, "Hola mundo!!", 0x00 ; El mensaje ; Firma bootloader times 510-($-$$) db 0 dw 0xAA55
No comprendo donde esta el problema , como dato os digo que ni se mueve el cursor Muchas gracias de antemano
La solucion fue esta :
1 ) Corregi el valor de ORG , que lo puse mal por un error de tipeo
2 ) Como solucion temporal hasta que maneje bien lods y familia , hice un mov al , [DS:SI]. Luego antes de repetir el bucle incremento SI para pasar al siguiente caracter y por fin resuelto !!!!!!!!!!!!!!!!!!!!!!!(10^9000 exclamaciones)!!!!!!!!!!!!!!!!!!!!
Os dejo el codigo corregido
Código
[BITS 16] [ORG 0x7C00] ; Este es el org correcto ; Entry point jmp main ; Rutinas putchar: ; Imprime el caracter guardado en el registro al mov ah , 0x0E mov bh , 0x00 mov bl , 0x07 int 10h retn putstr: cld ; Asi me aseguro de que lodsb incremente SI lodsb or al , al jz retornar call putchar jmp putstr retornar: retn main: mov si , msgTexto call putstr ; Declaraciones msgTexto db 0x0D, 0x0A, "Hola mundo!!", 0x00 ; El mensaje ; Firma bootloader times 510-($-$$) db 0 dw 0xAA55
Nota : Lo se usar cld para asegurarme de que lodsb incremente SI ha posteado por cpu2