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)