Asembler w BC++ 3.1

0

Witam. Mam stary kompilatorek BC++ 3.1 pod dosa i tam chce zrobic wstawke asemblerowa:

asm
{
    mov ax,0x13
    int 0x10
}

Kompilator wyrzuca blad ze nie wiem co to "mov", poza tym int traktuje jako deklaracja typu - jakim slowem to zamienic? - iret or sth?
Co robie zle?

0
asm {
  mov ax,0x13
  int 0x10
}
0

asm mov ax,0x13
asm int 0x10

0

Nic z tego nie dziala, moze napisze ta funkcje w calosci (jest niesamowicie skomplikowana :) :

void graf(char tryb=0x3)
{
    asm
    {
        mov ax,tryb
        int 0x10
    }
}

Cepa: jak zrobie tak ja ty polecasz to wychodzi blad: "invalid opcode operands"

0

Ok, zwracam honor chlopaki, dziala jak mowicie.
Cepa: wystarczylo ze zmienilem typ parametru funkcji z char na unsigned (przeciez char to 1 bajt a ax ma 2 bajty)

Jak sie deklaruje etykiete w takiej wstawce:

SKOK:
    jakies instr...
    jmp SKOK
    ...
0

Musisz zadeklarować etykietę poza wstawką np.:
<cpp>
int main(void)
{
clrscr();
char c = getch();
asm {
cmp c, 'a'
je OK
}
printf("Błąd");
goto EXIT;
OK:
printf("OK");
EXIT:
getch();
return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1