Subj : TP 7.0 pointer passing convension
To : Anton Shepelev
From : Anton Shepelev
Date : Sat Feb 15 2020 10:40 pm
I wrote:
> procedure AtoB(a: byte; var b: byte);
> begin asm
> PUSH AX { store AX }
> MOV DI, [BP+4] { store offset of b in DI }
> MOV ES, [BP+2] { store segment of b in ES }
> MOV AX, [BP+8] { store a in AX }
> MOV [DI], AX { assign AX to a }
> POP AX { restore AX }
> end end;
Here is a fixed version, without redundant opera-
tions and with single-byte write:
procedure AtoB(a: byte; var b: byte);
begin asm
MOV ES, [BP+2] { store segment of b in ES }
MOV DI, [BP+4] { store offset of b in DI }
MOV AX, [BP+8] { store a in AX }
MOV [DI], AL { assign AL to a }
end end;
---
* Origin: nntps://fidonews.mine.nu - Lake Ylo - Finland (2:221/360.0)