关于delphi汇编问题,急救!!!(100分)

  • 主题发起人 主题发起人 huait
  • 开始时间 开始时间
H

huait

Unregistered / Unconfirmed
GUEST, unregistred user!
function TForm1.GetData():integer;
Asm
PUSH DX
PUSH AX
PUSH CX
PUSH BX
MOV DX,$03FB
MOV AL,80
OUT DX,AL
MOV DX,$03F8
MOV AL,60
OUT DX,AL
MOV DX,$03F9
MOV AL,00
OUT DX,AL
MOV DX,$03FB
MOV AL,0B
OUT DX,AL
MOV DX,$03FC
MOV AL,03
OUT DX,AL
MOV DX,$03F9
MOV AL,00
OUT DX,AL
MOV CX,0007
ADD BX,+06
MOV DX,$03F8
IN AL,DX
@AA:MOV DX,$03FD
IN AL,DX
TEST AL,$1E
JNZ @AA
TEST AL,01
JNZ @BB
JMP @AA
@BB:MOV DX,$03F8
IN AL,DX
AND AL,$7F
CMP AL,3D
JNZ @AA
@CC:MOV DX,$03FD
IN AL,DX
TEST AL,$1E
JNZ @CC
TEST AL,01
JNZ @DD
JMP @CC
@DD:MOV DX,$03F8
IN AL,DX
AND AL,$7F
MOV [BX],AL
MOV EAX,[BX]
MOV @Result,EAX
DEC BX
LOOP @CC
POP BX
POP CX
POP AX
POP DX
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(getdata()));
end;

此程序为获取电子称数据。ASM....END 部分原在foxpro25下的获取电子称数据程序。移到
delphi中,运行时出现privileged instruction错误,也不能得到数据。请大哥们帮忙。。。。
 
这是16位的汇编指令,他用了In 和Out等16位端口操作指令。
在WindowsNT/2000下,程序要进入Ring0的特权级别才能使用这些指令。
Windows98下应该没问题。
 
这是因为你的操作系统是WIN2000或者以上版本,WIN2000及以上版本不支持通过
汇编直接操作硬件端口,要改用API函数,或者用串口通讯控件。
 
Win98下就没问题了,如果一定要在2K下用,留个mail.我有别人编好的驱动,可直接访问.
 
多谢leechange
我的email是:huait@21cn.com
lichenghai@21cn.com
 
leechange兄,也给我一份!谢谢! chinatown999@sohu.com
 
后退
顶部