Avatar billede mcergud Nybegynder
08. marts 2000 - 10:32 Der er 11 kommentarer og
1 løsning

ASM i c++ Borland 5.0

Jeg kan ikke få noget ASM til at virke i Borland c++ 5.0.

    fx.          mousen
void mouseon () {
    asm{
        push ax
        mov ax,1
        int 33
        pop ax
        }
    }

void vismouse () {
    asm{            viser mousen
        push ax
        mov ax,3
        int 33
        pop ax
        }
    }
void mouseoff () {
    asm{            slukker mousen
        push ax
        mov ax,0
        int 33
        pop ax
        }
    }

main () {
    mouseon ();
    do {
      vismouse ();
      } while (Kbhit!)
    }
   
Der er måske nogle fejl i teksten.
Men jeg har den rigtig tekst der hjemme og jeg ved at den virker i ASM.
Avatar billede mcergud Nybegynder
08. marts 2000 - 10:33 #1
Hov jeg glemte.
#include <????.h> til Kbhit!
Avatar billede soepro Nybegynder
08. marts 2000 - 11:42 #2
Det er meget simpelt: musekaldet er interrupt 33h ikke 21H som 33 decimalt svarer til.

I ASM er alle angivne "tal" automatisk hexadecimal, men i C er de decimale. Du får derfor kald interrupt 33 = 21h og den duer ikke. hvis du retter 33 til 0x33 i alle 'int' ASm instructioner ovenfor, så funker det. (Du behøver i øvrigt ikke at push & poppe ax - det gør C automatisk lige før ASM{ og efter den sidste "tuborg" klamme der hører til den. (Prøv at køre TurboDebugger på det dannede program via tools menuen - så kan du se det.)
Avatar billede soepro Nybegynder
08. marts 2000 - 11:44 #3
Det kørende program se sådan her ud:

#include <conio.h>

void mouseon () {
  asm{
      mov ax,1
      int 0x33
    }
}
void vismouse () {
  asm{
      mov ax,3
      int 0x33
    }
}
void mouseoff () {
  asm{
      mov ax,0
      int 0x33
    }
}

int main(void)
{
  mouseon();
  do {
    vismouse();
  } while (!kbhit());
  mouseoff();
  return 0;
}
Avatar billede mcergud Nybegynder
08. marts 2000 - 21:26 #4
til soepro
Jeg ved godt det er 33h
det var bare en skrive fejl
Når jeg compiler skriver den

      Invalid command line

Nogle idet
Avatar billede soepro Nybegynder
13. marts 2000 - 09:45 #5
I hvilken linie ??? Ved kompilering af mit program ???
Avatar billede mcergud Nybegynder
14. marts 2000 - 11:40 #6
1.1 Invalid command line

Det skriver den i alle asm programmer???????????????????

AHHHHHHHHHHHHHHHHHH
Avatar billede soepro Nybegynder
15. marts 2000 - 08:22 #7
Jeg er stadig ikke med ?!? Hvad er det du prøver på ? Hvordan kompilerer du programmet ? Umiddelbart synes jeg det ligner at din syntaks til opstart af selve kompileren er gal. Jeg har kompileret mit eksempel med Borland C++ 5.02 uden problemer.
Avatar billede mcergud Nybegynder
15. marts 2000 - 13:58 #8
Jeg hved ikke så meget og at kompile. Så jeg trykker bare på kompile knappen.

ps.
hved du hvor jeg kan downloade 5.02 fx.
Avatar billede soepro Nybegynder
30. marts 2000 - 11:28 #9
Prøv at gen-installere din Borland C++ 5 - jeg havde en underlig intern fejl omkring link i min 5.02 den første gang jeg installerede. Undlad at rette alt for meget på de biblioteksnavne, som installationsprogrammet foreslår - min erfaring er at nogle programmer (BC5.02 deriblandt) "kløjs" i det, hvis man ændrer dem.
Avatar billede justica Nybegynder
03. juni 2000 - 11:01 #10
Jeg bruger godt nok ikke selv borland's compiler, men i mine programmer skal jeg starte assembler kode med enten :

_asm{
}

eller
__asm{
}

det er en watcom c/c++ compiler..
Avatar billede mcergud Nybegynder
23. oktober 2000 - 09:09 #11
Did\'t
Avatar billede soepro Nybegynder
23. oktober 2000 - 10:03 #12
mcergud >> selv tak for hjælpen. Du har stadig ikke fortalt hvad du har fundet ud af.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester