blob: e21a37406720fc3c03a52e069d54ad8b26635454 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
{ %CPU=i386 }
{ %OPT=-Cg- }
{ Old file: tbs0276.pp }
{ Asm, intel reference parsing incompatibility OK 0.99.13 (PFV) }
{$asmmode intel}
type
trec = record
ypos,
xpos : longint;
end;
z80cont = record
dummy : longint;
page: array [0..11,0..16383] of byte;
end;
var
rec : tRec;
myz80 : z80cont;
error : boolean;
test : byte;
begin
error:=false;
test:=23;
rec.xpos:=1;
myz80.page[0,5]:=15;
asm
lea edi, Rec
cmp byte ptr [edi+tRec.Xpos], 1
jne @error
cmp byte ptr [edi].trec.Xpos, 1
jne @error
mov ecx, 5
mov dh,byte ptr myz80.page[ecx]
cmp dh,15
jne @error
mov byte ptr myz80.page[ecx],51
jmp @noerror
@error:
mov byte ptr error,1
@noerror:
end;
if error or (test<>23) or (myz80.page[0,5]<>51) then
begin
Writeln('Error in assembler code generation');
Halt(1);
end
else
Writeln('Correct assembler generated');
end.
|