простая программа "Hello World" на языке встроенного ассемблера на C / C ++ - PullRequest
7 голосов
/ 01 февраля 2010

я использую devcpp и borland c компилятором ....

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
}

в приведенных выше фрагментах кода я хочу напечатать строку с помощью языка ассемблера ... но как я могу поставить адресстроки в регистре cx ....

что-то не так в коде ???

Ответы [ 2 ]

4 голосов
/ 02 февраля 2010

У меня нет компилятора Borland под рукой, поэтому я могу неправильно запоминать его синтаксис, но вы пробовали это:

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
}

или это:

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: хотя это скомпилируется (теперь, когда я изменил MOV на LDS), оно все равно выдаст ошибку во время выполнения. Я попробую еще раз ...

2 голосов
/ 01 февраля 2010

Просто поместите туда имя переменной:

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

Отказ от ответственности: я не слишком хорош в сборке.

...