wstawki asm

0

Witam

Uzywam Dev C++.
Mozecie mi powiedziec jak wywolac przerwanie programowe za pomoca wstawki asm?
Swego czsu pisalem w Pascalu i wygladalo to dosc prosto a mianowicie

mov ah,10h
mov al,13h
int 10h

Troche szperalem na google i doczytalem ze cos takiego jak przerwania trzeba uzyc odpowiednich funkcji WinAPI - :-/ - czy to konieczne - jezeli tak to jakie to funkcje.

P.S

Sugestie a propos innych kompilatorow mile widziane :P</cpp>

0

W Windows nie da rady, musisz skompilowac program 16 bitowy (djgpp bodaj takie robi).

0

nawet kompilujac pod 16 bit, jest calkiem mozliwe ze uruchamiajac to na windowsach NT w gore, program siewylozy bo ta akurat funkcja bios'u zostala odcieta. powiedz co dokladnei mialo robic 10h/1013h, znajdzie sie i odpowiednik winapiowy

0

wstaw

__asm
{
//komendy 
}

i pójdzie

0

Pokemaniak, znów udowodniłeś, że nie masz pojęcia o sprawie. IDE Dev-C++ pracuje z kompilatorem gcc, inline asm jest w nim w składni at%t:

    __asm__ __volatile__ ("movb      $0x10, %ah  \n"
         "movb  $0x13, %al  \n"
         "int   $0x10");

http://www.uv.tietgen.dk/staff/mlha/Pc/Prog/asm/int/INT10.htm#10
Powiedz co robisz konkretnie, winapi ma nieco inną filozofię... gdybyś kompilował to kompilatorem dla DOSa to powyższy kod zadziałalby tak w 'czystym' DOSie jak i w trybie wirtualnym pod Windows.

0

Mi chodzi tak jak napisałem

0

char cpv[12];

__asm__ __volatile__ (".intel_syntax noprefix\n"
                                             "mov eax, 0\n"
                                             "cpuid\n"
                                             "mov dword ptr _cpv, ebx\n"
                                             "mov dword ptr _cpv+4, edx\n"
                                             "mov dword ptr _cpv+8, ecx\n"
                                             ".att_syntax \n");

w gcc można również używać składni Intela, tak jak podałem powyżej, jest deko łatwiejsza niż składnia AT
z tym, że wymaga, aby zmienne były globalne i trzeba jeszcze dodawać prefix _ w kodzie asm przy zmiennej

0

Co nie zmienia faktu że bezpośrednie użycie przerwań DOS i BIOS (oprócz 'int 3' ) w programie
Win32 jest błędem .Nie będzie działać .

0

Zgada się, win nie zezwala na dostęp do przerwań. I tu już chyba nie ma nad czym dyskutować.

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