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

匆匆过客 提交于 2019-12-12 08:46:20

问题


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
}

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


回答1:


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




回答2:


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.



来源:https://stackoverflow.com/questions/2179183/a-simple-hello-world-inline-assembly-language-program-in-c-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!