Simon Xin Cheng wrote:
rombios.bin. However, when I tried to print out more bytes, I can only get 16 output. What is the problem? My code is right after copy bios to 0xF0000:
mov ax, #0x10 mov ds, ax mov eax, #0xF0000 mov esi, eax
mov ecx, #0x30 ; loop counter mov dx, #0x3f8 ; serial port
cld str_loop: lodsb out dx, al loop str_loop
Thats because you have forgotten that the CPU runs several orders of magnitude faster than the serial port. You only get 16 bytes because the 16550 UART FIFO is only 16 bytes deep. After that your bytes are going to the bit bucket.
You have to wait until the busy flag of the 16550 is clear after you write each byte. See the a data sheet on the UART.