assume cs:code
data segment
db 'Hello World!',0
data ends
code segment
start: mov dh,8
mov dl,3
mov cl,10
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
push ax
push bx
push cx
push es
push di
mov al,dh
sub al,1
mov bl,160
mul bl
mov bx,ax
mov al,dl
sub al,1
mov bl,2
mul bl
add ax,bx
mov bx,0B800h
mov es,bx
mov di,ax
mov ah,cl
s: mov ch,0
mov cl,[si]
jcxz ok
mov al,[si]
mov es:[di],al
mov es:[di].1,ah
inc si
add di,2
jmp short s
ok:pop di
pop es
pop cx
pop bx
pop ax
ret
code ends
end start