出现这个对话是什么意思阿?我看过帮助,知道是出现了异常,操作系统的或是程序的。在98下嵌汇编读并口,提示说在执行到$0000XXXX处发生了读某个大于$FXXXXXXX地址的错误。这是怎么回事阿?

解决方案 »

  1.   

    程序很简单,是这样的:
    procedure readport(Port:WORD;num:word;addr:pbytearray);
    label cycle;
    begin
    ASM
    push esi;
    push edi;
    and ecx,0;
    mov cx,num;
    mov edi,addr;
    MOV DX, Port;
    inc dx;
    inc dx;
    mov al,$20;
    out dx,al;  {lpt1 output}
    dec dx;
    dec dx;
    cycle:in AL, DX;
    mov [edi],AL;
    inc edi;
    loop cycle;
    pop edi;
    pop esi;
    END;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    a:word;
    {b:array[0..1000] of byte;  }
    c:pbytearray;
    i:integer;
    begin
    a:=100;
    memo1.text:='asd';
    getmem(c,1000);
    readport($378,a,@c);
     for i:=1 to 100 do
       begin
       memo1.text:='assdfrf';
       memo1.Text:=memo1.Text+inttostr(c[i])+' ';
       end;
    freemem(c);  
    end;
    编译通过了,执行的时候,按下按钮1,就出现了一个debugger Exception Notifation警告对话框,说是在执行到$00XXXXXX处发生了读某个大于$FXXXXXXX地址的错误。且有选择CPU窗口的提示。
      

  2.   

    窗体上只有一个memo1和一个OK按钮,大家把那个程序拷到自己的机器上试一下阿,会不会出现我说的那种情况,谢谢了阿。要在98下,2000下不能读写端口。拜托了阿