开发者

a Simple "Hello World" Inline Assembly language Program in C/C++

开发者 https://www.devze.com 2022-12-19 07:36 出处:网络
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)

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       // (length of the string)
    int 0x21       // system call
}
开发者_StackOverflow社区

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???


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       //  (length 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       //  (length 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...


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消