V cem?

HackForum

V cem?#
V cem mohu zkompilovat tento zdrojak?

uses crt;
var a,b,s,r:integer;
begin
clrscr; {vymaž obrazovku}
write (\'a=\');
readln(a); {vstup hodnoty a}
write (\'b=\');
readln(b); {vstup hodnoty b}
asm {začátek bloku asm}
MOV AX, a {do AX vlož hodnotu proměnné a (z paměti)}
ADD AX,b {k AX přičti hodnotu proměnné b}
MOV s, AX {do proměnné s vlož součet z registru AX}
MOV AX,a {znovu naber a}
SUB AX,b {odečti od AX hodnotu b}
MOV r,AX {do proměnné r vlož rozdíl z registru AX}
INC a {k a přičti 1}
DEC b {od b odečti 1}
end; {konec bloku asm}
writeln (\'a+b=\',s,\' a-b=\',r);{vypiš obsahy proměnných}
writeln (\'a+1=\',a,\' b-1=\',b);
readln;
end.
(odpovědět)
Pas | 87.236.199.*9.11.2006 22:38
re: V cem?#
Todle je pascal takze [link]
(odpovědět)
stup1d | E-mail | ICQ 3170400809.11.2006 22:48
re: V cem?#
je to pascal, akorat ze sou tam syntakticky chyby - escapnuty '. to budes muset poopravovat. ale na to prijdes...
(odpovědět)
axis | 82.208.10.16/62.84.132.*10.11.2006 6:07
re: V cem?#
jo a jeste ti na zacatku chybi radek "program <jmenoprogramu>;" a dalsi vec je ze se tam pouziva vlozenej asm, coz nevim jestli chodi pod jinejma kompilatorama nez pod borlandim turbo pascalem.
(odpovědět)
axis | 82.208.10.16/62.84.132.*10.11.2006 6:47
re: V cem?#
axis: radek program <jmenoprogramu> je nepovinny, takze mu tam nechybi a navic si dovolim optimalizaci, nerad vidim plytvani systemovymi zdroji:

var
a,b,s,r : integer;

begin
asm
mov ax, 03h
int 10h {vymaž obrazovku}
end;

write ('a=');
readln(a); {vstup hodnoty a}
write ('b=');
readln(b); {vstup hodnoty b}
asm {začátek bloku asm}
MOV AX, a {do AX vlož hodnotu proměnné a (z paměti)}
ADD AX,b {k AX přičti hodnotu proměnné b}
MOV s, AX {do proměnné s vlož součet z registru AX}
MOV AX,a {znovu naber a}
SUB AX,b {odečti od AX hodnotu b}
MOV r,AX {do proměnné r vlož rozdíl z registru AX}
INC a {k a přičti 1}
DEC b {od b odečti 1}
end; {konec bloku asm}
writeln ('a+b=',s,' a-b=',r);{vypiš obsahy proměnných}
writeln ('a+1=',a,' b-1=',b);
readln;
end.

Zkompilovat v Turbo Pascal 6 nebo jeste lepe v Turbo Pascal 7. Program bude 16-ti bitovy a pobezi v Real mode. (Vypisovani textu a cekani na klavesu lze rovnez prepsat do ASM).

Tento zdrojak pujde zkompilovat i v ostatnich kompilatorech pascalu, ktere podporuji inline asm s Intel syntaxi, ovsem pod Linuxem budou problemy s int 10h (preruseni VGA) tzn. tam to skonci napisem Segmentation Fault ! A nebo to muze vyhodit General protection failure (Runtime error 216)
(odpovědět)
--==[FReeZ]==-- | E-mail | Website10.11.2006 11:30
re: V cem?#
muzu se jenom zeptat, proc se tam operuje s asm ?
(odpovědět)
Nostur | E-mail | Website | PGP | ICQ 33577219010.11.2006 18:16
re: V cem?#
Neni to nejakej ucebni text? A ten asm tam neni na ukazku?
(odpovědět)
pr0ph3t (nechce se mi logovat) | 62.245.120.*10.11.2006 22:43
re: V cem?#
vypada to fakt jako studijni material. takze od toho ruce pryc, neuc se pascal, ale nejakej dobrej programovaci jazyk... doporucuju ansi c nebo c++
(odpovědět)
dayvee. | 62.177.92.*11.11.2006 11:55
re: V cem?#
Ano, je to studijni text, jelikoz se ucim vkladany asm.

Freez: Diky moc, psal jsi ze to zkompiluju v TB7 i v jinych kompilatorech pascalu. Jake jsou ty \"jine\"? Zkousel jsem freepascal, ale ten se tvaril jako ze nezna asm.

Predem diky za odpoved.
(odpovědět)
Pas | 87.236.199.*11.11.2006 12:03
re: V cem?#
Dodatek: Zkousel jsem to zkopilovat v i v Dev-Pascalu, ale hlasilo to:

unknown identifier: AX, H a dalsi chyby... je to vubec mozne v Dev-Pascalu zkompilovat?
(odpovědět)
Pas | 87.236.199.*11.11.2006 12:05
re: V cem?#
Dodatek2: Tak ted jsem si stahnul i Turbo Pascal 5.5 a kdyz jsem chtel zdrojak zkomplilovat (tpc program.pas), ohlasilo to chybu: asm, unknown identifier:/
(odpovědět)
Pas | 87.236.199.*11.11.2006 12:40
re: V cem?#
Pas: Nez neco zacnes kompilovat tak si nastav kompilator. Ve freepascalu je potreba nastavit ze uzivas assembler s Intel syntaxi, mozna bude potreba zapnout TP7 compatibilty a s nejvetsi pravdepodobnosti budes muset upravit kod, protoze registry ax, bx, cx, dx, ... jsou 16-ti bitove no a FPC je 32-bitovy, takze to bude eax, ebx, ecx, edx, ...

IMHO a,b,s,r musi byt Word a ne Integer. V FPC misto mov ax, 03h int 10h pouzij stare zname ClrScr. To same bude v Delphi, TMT Pascal, atp.

Kompilatoru pascalu je dostatecne mnozstvi, FPC je vyspelejsi nez C i C++ dohromady. C/C++ nejsou RAD, zatimco FPC+Lazarus/Delphi RAD jsou. Kdejaky idiot ti bude tvrdit, ze pascal je k nicemu, jenze je zpusobeno tim, ze malokdo vi co v nem lze napsat a o kolik efektivnejsi bude napr. tvorba IDE v Delphi nez v C++. Tim castecne reaguji na vyplod od dayvee, ktery jeste asi v Pascalu nikdy nenapsal neco o delce vetsi, nez 10 000 lines
(odpovědět)
--==[FReeZ]==-- | E-mail | Website11.11.2006 14:01
re: V cem?#
Zkousel jsem to zkompilovat takto:

fpc -Mtp -Op1 program.pas

ale stale neuspesne, poradite mi pls jak mam presne freepascal nastavit, aby mi tento zdrojak bez problemu zkompiloval? Dekuji.
(odpovědět)
Pas | 87.236.199.*11.11.2006 20:07
re: V cem?#
Tak podivej se, puvodni verze (to nahore) je zdrojak pro Turbo Pascal, ve kterem take funguje.

To ti ale nestaci a chces to zkompilovat ve vsech kompilatorech pascalu o kterych se dozvis. Jeste ti nedoslo, ze kod se musi vzdy drobne upravit, aby sel zkompilovat v jinem prekladaci ? Precetl sis vubec me reakce ? Jaky mas duvod 16-ti bitovy kod kompilovat ve 32-bitovem prekladaci a naivne si myslet, ze to pujde bez uprav?

Kdyz by to bylo psano pro vice platforem, tak by to slo zkompilovat v pohode a bez uprav, ale NENI !

Pro vice informaci UTFG a taky RTFM a hledej rozdily mezi jednotlivymi kompilatory, jazyky, atp. Na zaver si zjisti co jsou to direktivy kompilatoru a proc se pouzivaji ve zdrojacich, ktere jdou pote bez uprav zkompilovat vsude.
(odpovědět)
--==[FReeZ]==-- | E-mail | Website11.11.2006 21:35

Zpět
Svou ideální brigádu na léto najdete na webu Ideální brigáda
 
 
 

 
BBCode