INT 10h/ah=13h doesn't print strings when part of second stage bootloader
<p>I used all the memory in the first sector, now I want to store a new variable string in the second sector (second stage) and print it. For instance:</p>

<pre><code>hello db 'Hello World'
</code></pre>

<p>The new string should be in another sector (because there is no more memory in the first sector). I did this with <a href="http://www.ctyme.com/intr/rb-0210.htm" rel="nofollow">INT 13h,ah=2</a> to read the second disk sector to address 900h:0000. I stored the variable <code>hello</code> in that sector as well as the code to print. It fails to print my string when I use <a href="http://www.ctyme.com/intr/rb-0607.htm" rel="nofollow">INT 10h/ah=13h</a> in code like this:</p>

<pre><code>mov ax, 7c0h
mov es, ax

mov bp, hello 
mov ah,13h          ; function 13 - write string
mov al,01h          ; attrib in bl, move cursor
mov bl,0bh          ; attribute - magenta
mov cx,30           ; length of string
mov dh,1            ; row to put string
mov dl,4            ; column to put string
int 10h             ; call BIOS service
</code></pre>

<p>When the variable is in the first sector it prints well, but when I store it in the second sector it doesn't print, even when I do:</p>

<pre><code>mov ax, 900h
mov es, ax
</code></pre>

<p>Example code:</p>

<pre><code>xchg bx, bx
mov ax, 7c0h
mov ds, ax

sector_2:
mov bx, 900h
mov es, bx
mov bx, 0
mov ah, 2
mov al, 1
mov ch, 0
mov cl, 2
mov dh, 0                     
mov dl, 80h                    
int 13h                        
call 900h:0000

jmp $

times 510 - ($-$$) db 0            ; Fill empty bytes to binary file
dw 0aa55h                          ; Define MAGIC number at byte 512
;;;;;;;;;;;;;;;;;;;;;;;;

sector_2:
mov ax, 900h
mov es, ax      
mov bp, hello
mov ah,13h          ; function 13 - write string
mov al,01h          ; attrib in bl, move cursor
mov bl,0bh          ; attribute - magenta
mov cx,5            ; length of string
mov dh,1            ; row to put string
mov dl,4            ; column to put string
int 10h             ; call BIOS service 

retf
jmp $

hello db 'Hello'
times 1024 - ($-$$) db 0
times 2*8*63*512 - ($-$$) db 0
</code></pre>