Free Pascal Compiler a Assembler

0

Witam wszystkich!

Mam pewien problem, dopiero sie ucze pascala, zainstalowalem sobie free pascal compiler i wpisalem do programu kod z jednej książki i przy kompilacji wywala mi 3 błedy na każdą linie kodu:

procedure g_na_vga(tryb: byte);
begin
asm

mov ah, 00h
mov al, tryb

int 10h

end;
end;

Wyświetlają mi sie takie bledy:

graf_fx.pas(17,7) Error: Unknown identifier AH
graf_fx.pas(17,11) Error: Unknown identifier H
graf_fx.pas(17,11) Error: Invalid reference syntax
graf_fx.pas(17,11) Error: No size specified and unable to determine the size of the operands
graf_fx.pas(17,11) Error: Asm: [mov mem32,mem32] invalid combination of opcode and operands
graf_fx.pas(18,7) Error: Unknown identifier AL
graf_fx.pas(18,9) Error: Asm: [mov mem8,mem8] invalid combination of opcode and operands
graf_fx.pas(20,7) Error: Unknown identifier H
graf_fx.pas(20,7) Error: Invalid reference syntax
graf_fx.pas(20,7) Error: Asm: [int mem??] invalid combination of opcode and operands

Sprawdzałem wszystko dokladnie i przepisałem dokładnie jak z ksiazki, czy to znaczy że w książce jest bład czy to mzoe u mnie jest coś nie tak?

Proszę o pomoc
Z góry dzieki!!</delphi>

0

Co nie chodzi? Wszystko chodzi. Tylko sobie opcje ustaw. Options -> Compiler -> Assembler -> Intel style assembler (domyślnie jest AT&T) i wszystko śmiga.

no to jasne, że na FPC nie pójdzie

A niby dlaczego nie?

0

Dzieki brodny już działa :) Teraz mam inny problem :P
Kod:

procedure g_rysuj_piksel_13h(x, y: word; kolor: byte);
begin
asm

mov ax, y
mov di, ax
shl ax, 8
shl di, 6
add di, ax
add di, x
mov ax, 0a000h
mov es, ax
mov al, kolor
mov byte ptr es:[di], al

end;
end;

Wyśweitlają mi sie błedy

graf_fx.pas(38,23) Error: Asm: 16 Bit references not supported
graf_fx.pas(38,23) Error: Asm: Invalid effective address

38 linia to ta: mov byte ptr es:[di], al

0

Nie mam pojęcia, nie jestem programistą assemblera, nie znam się na tym. Z komunikatów kompilatora wynika, że jest problem z adresowaniem 16-bitowym czy czymś takim :)

0

Sprobuj

mov byte ptr es:[edi], al
0

bo FPC jest chyba 32-bitowy ;P

No właśnie, chyba. A co z tworzeniem EXE pod DOSa? 32-bitowego pliku chyba DOS nie odpali no nie?

0

Przede wszystkim, to FPC ma różne wersje. Pod różne systemy i pod różne procesory. poczynając od 16-bitowej pod DOS'a kończąc na 64 bitowej na platformy Linuxowe obsługujące to cacko (wydaje mi się, że Windows nie obsługuje procesorów 64-bitowych, ale nie mam takiego i nie mam jak sprawdzić no i nie jestem obeznany w teorii ;P)

0

Dzięki Wolverine, już dziala :)

Ostatnie pytanko chyba ;-)
Znacie moze jeszcze jakieś dobre tutoriale do assemblera? :)

0

bo FPC jest chyba 32-bitowy ;P

No właśnie, chyba. A co z tworzeniem EXE pod DOSa? 32-bitowego pliku chyba DOS nie odpali no nie?

moment, moment. FPC JEST 32-bitowy. A jak działa pod DOSem? Dzięki go32v2. I to cała filozofia. 16-bitowej wersji FPC nie ma.

znalzłem po czesku (ale da się zrozumieć) wytłumaczenie czym jest go32v2:
http://linux.programator.cz/forum/read.php?f=14&i=31&t=31

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