如何读取寄存器中的数据?
天空的云彩 2001-12-19 04:04:42 VB中:
Private Declare Sub out_byte Lib "vbdll.dll" (ByVal port%, ByVal da%) '写一个byte
Private Declare Function in_byte Lib "vbdll.dll" (ByVal port%) As Integer '读一个byte
Function ad2118(channel As Integer) As Integer
Dim h, m, l, da As Integer
out_byte baseadd, channel
delay (100)
out_byte baseadd + 1, 1
delay (500)
h = in_byte(baseadd + 2)
delay (50)
l = Int(in_byte(baseadd + 3) / 16)
da = h * 16 + l
ad2118 = da
End Function
DELPHI中:
procedure out_byte(port,dat:integer);external 'vbdll.dll';
function in_byte(port:integer):integer;external 'vbdll.dll';
Function ad2118(channel:Integer):integer;
var h,l,da:integer;
begin
out_byte(baseadd, channel);
sleep(100);
out_byte(baseadd+1, 1);
sleep(500);
h:= in_byte(baseadd + 2); //高位
sleep(50);
l:= trunc(in_byte(baseadd+3)/16); //低位
da:= h*16 +l ;
ad2118:= da ;
end;
这是两段程序,其中BASEADD为常量=H100;该程序在VB中运行正常,但在DELPHI中函数AD2118无法返回值;我想问题应该在DA:=H*16+L行,但该如何纠正却不知道。我试过,H的值是从寄存器EAX中取得的,而L的值是从寄存器EBX中取得的,若要从这两个寄存器中取出H,L值,该怎么取呢?