在DELPHI2 0 3 0中直接操作埠

2021-04-17 06:57:17 字數 2100 閱讀 9618

borland

delphi2.0/3.0以其強大的功能及方便快捷的程式設計

而為廣大程式設計師所喜愛。但是在用它來編寫工業控制程式時,需要對

計算機所連線的外部裝置進行操作,即直接對i/o位址進行讀寫操作,

這時該軟體就顯得有些美中不足了。

針對這一問題,筆者使用

delphi 2.0/3.0以內嵌彙編的方式編寫

了乙個模組port95. pas,可方便地實現直接對i/o位址的讀寫操作,代

碼簡捷且執行速度較快。

使用時只要將port95.pas加到工程檔案中,並在users中加上port

95,就可以在應用程式中直接對i/o埠進行操作。

具體的實現方法及port95.pas的源**如下:

unit port95;

inte***ce

function portreadbyte(addr:word) : byte;

function portreadword(addr:word) : word;

function portreadwordls(addr:word) : word;

procedure portwritebyte(addr:word; value:byte);

procedure portwriteword(addr:word; value:word);

procedure portwritewordls(addr:word; value:word);

implementation

function portreadbyte(addr:word) : byte; assembler; regi

ster;

a**mov dx,ax

in al,dx

end;

function portreadword(addr:word) : word; assembler; regi

ster;

a**mov dx,ax

in ax,dx

end;

function portreadwordls(addr:word) : word; assembler; re

gister;

const

delay = 150;

// depending of cpu speed and cards speed

a**mov dx,ax

in al,dx

//read lsb port

mov ecx,delay

@1:loop @1 //delay between two reads

xchg ah,al

inc dx

//port+1

in al,dx //read msb port

xchg ah,al //restore bytes order

end;

procedure portwritebyte(addr:word; value:byte); assemble

r; register;

a**xchg ax,dx

out dx,al

end;

procedure portwriteword(addr:word; value:word); assemble

r; register;

a**xchg ax,dx

out dx,ax

end;

procedure portwritewordls(addr:word; value:word); assemb

ler; register;

const

delay = 150;

// depending of cpu speed and cards speed

a**xchg ax,dx

out dx,al

mov ecx,delay

@1:loop@1

xchg ah,al

inc dx

out dx,al

end;

end. //單元結束

上述port95.pas適用於

delphi 2.0/3.0、windows 95 作業系統

在Delphi中操作Mysql

以前在vc中使用過mysql,當時是找的乙個現成的c mysql類。最近在delphi中又需要操作mysql,最初找了個封閉過的類,但已經是七八年以前的程式了,我機器上裝的是mysql5.1,使用了5.1中的libmysql.dll 2.25mb 連線正常 查詢乙個字段正常,但查詢兩個欄位就只能獲取...

關於 delphi中with在Python中的討論

下面這段是我昨天在python乙個討論群裡對delphi中with在python中的討論,希望能對大家有所啟發,同時我也將這個討論記錄下來,有時間多體會體會。不要小看這段,最後 seewind 說的話很經典。江南 23 46 27 其實 我覺得是想找 python中類似 delphi 的 with ...

在Delphi中定位檔案位置

在delphi中,定位檔案的操作主要有兩種方法。一種是直接定位檔案,即通過 開啟 對話方塊 opendialog 控制項來實現。另一種是只定位到資料夾,然後再在此資料夾內尋找檔案,這種定位方法是利用delphi提供的selectdirectory函式。這個函式是在filectrl單元中定義的,因此在...