Contributor: IAN LIN
{ Updated MISC.SWG on May 26, 1995 }
{> PROCEDURE test(portno: word; value: byte; VAR result: BYTE);> ASSEMBLER;> ASM> mov dx, portno> mov al, value> out dx, al> in dx, al> mov di, OFS(result); (*)> stosb> END;> (*): This is the problem: you can't use the OFS() function> in an ASM statement.
No problem. You use les di,result.
}
procedure test(portno:word; value:byte; var result:byte);
assembler; asm
 mov dx,portno
 mov al,value
 out dx,al
 in dx,al
 les di,result
 mov es:[di],al
end;
{
es:di becomes segment:offset to Result. I think this would work as a
function better. It is similar but less code. Function results are in
AX for works, AL for bytes, AX:DX for pointers.
}
function test(portno:word; value:byte:byte;
assembler; asm
 mov dx,portno
 mov al,value
 out dx,al
 in dx,al
end;
{
All done. AL's value is returned as the Byte result right away.
}


AltStyle によって変換されたページ (->オリジナル) /