x86 - Special Characters on program -


this first time here.

my friend told me forum if have questions programming.

so here program. problem there special characters printed too.

how remove this?

.model small .stack .data    var db "welcome assembly language$" .code  clear proc near     mov ah, 6    mov bh, 2h    mov cx, 0    mov dx, 184fh    int 10h    ret     clear endp   cursor proc near     mov ah, 2    mov bh, 0    mov dh, 10    mov dl, 14    int 10h    ret    cursor endp   start:     body proc near    call clear    call cursor     mov ah, 9    mov dx, offset var    int 21h    mov ah, 4ch    int 21h    body endp   end start 

how can remove special characters?

thanks

you have segment problem: when use the .data directive, data placed in segment accessed via ds register while .code directive puts assembled code segment accessed via cs register.

with small memory model, data, code , stack memory merged single segment, programmer has responsability initialize segment registers himself.

you see weird characters because data accessed int 21h interruption via ds:dx has ds points wrong segment number see garbage before data. need fix ds avoid garbage output.

add @ begining of body proc:

mov ax, @data mov ds, ax 

we need use ax intermediate value because cannot mov ds:@data

this 16 bit asm reference can help.


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -