views:

569

answers:

2

i use devcpp and borland c compiler....

asm {
    mov ax,4       // (I/O Func.)
    mov bx,1       // (Output func)  
    mov cx,&name   // (address of the string)
    mov dx,6       //  (lenght of the string)
    int 0x21       // system call
}

in the above code snippets i want to print a string with the help of assembly language... but how can i put the address of the string in register cx....

is there something wrong in code???

+2  A: 

Just put the variable name in there:

mov ax,4       // (I/O Func.)
mov bx,1       // (Output func)  
mov cx,name   // (address of the string)
mov dx,6       //  (lenght of the string)
int 0x21       // system call

Disclaimer: I'm not too good at assembly.

GMan
+2  A: 

I don't have the Borland compiler on hand, so I might be misremembering its syntax, but have you tried this:

asm {
    mov ax,4       // (I/O Func.)
    mov bx,1       // (Output func)  
    lds cx,"Hello, world" // (address of the string)
    mov dx,6       //  (lenght of the string)
    int 0x21       // system call
}

or this:

char msg[] = "Hello, world";

asm {
    mov ax,4       // (I/O Func.)
    mov bx,1       // (Output func)  
    lds cx, msg   // (address of the string)
    mov dx,6       //  (lenght of the string)
    int 0x21       // system call
}

edit: although this will compile (now that I've changed MOV to LDS), it will still throw an error at runtime. I'll try again...

egrunin
no it doesnt work...it gives error........is there any other way by which i can get the address of string..and put then back to the cx register....
Vizay Soni