谁有Turbo pascal的标准单元源函数或过程给我共享一下发到我邮箱里,inline()函数是一个什么函数或过程?谢谢!(100分)

  • 主题发起人 主题发起人 xutl
  • 开始时间 开始时间
X

xutl

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中用到了CRT,DOS两个单元的函数,inline($b0/$20/$e6/$20)这个函数或过程是做什么的?Setintvec($08,@send);lo(23864)这两个函数又是做什么的?谢谢!
 
以下摘于 TP7 的 HELP,至于那两个单元,没有源码,只有 INT 文件,
如果需要,留下邮箱,把 TP7 整个发给你。。



Inline statements and directives allow you to insert machine code
instructions directly into the code of a program or unit.

Syntax:
inline ( data / data / ... data )

Remarks:
When used as a statement, the inline data elements are inserted directly in
the code.

When used as a directive in a procedure or a function declaration, the
inline data elements are inserted in the code each time the procedure or
function is called.

==========================================================================
Lo (function)

Returns the low-order Byte of the argument.

Declaration:
function Lo(X): Byte;

Target:
Windows, Real, Protected

Remarks:
X is an expression of type Integer or Word. Lo returns the low-order byte of
X as an unsigned value.

==========================================================================

SetIntVec (procedure) (Dos unit and WinDos unit)

Sets a specified interrupt vector to a specified address.

Declaration:
procedure SetIntVec(IntNo: Byte
Vector: Pointer);

Target:
Windows

Remarks:
IntNo specifies the interrupt vector number (0..255), and Vector specifies
the address.

Vector is often constructed with the @ operator to produce the address of an
inter-rupt procedure. Assuming Int1BSave is a variable of type Pointer, and
Int1BHandler is an interrupt procedure identifier, the following statement
sequence installs a new interrupt $1B handler and later restores the
original handler:
 
inline 是调用汇编的啦:)
 
不是汇编,而是机器码。
 
两位朋友都没有满足我的问题,我知道inline($b0/$20/$e6/$20)是调用汇编,但我要具体的,在我的程序里有十几处这样的代码。至于cqbaobao这位朋友告诉我到TP的帮助找函数,我已经在你告诉我之前已经将帮助中的一些单元文件找到了!不过我还是要谢谢你回答我的帖子!
 
首先,那不是汇编,而是机器码,

我有一个基本准确的方法:利用 debug 的反汇编功能;

先把你的需要查询的机器码写到 文本文件里,
利用 Debug 调入,再用 U 命令,可以看到汇编代码,
$b0/$20/$e6/$20 -> mov al,20
out 20,al;
 
学习,我还以为只有C++有inline函数,看起来不太一样呀。
 
cqbaobao兄对机器码很熟悉嘛!非常谢谢你拉!inline($fb)是STI;inline($fa)是CLI;对吗?
 
inline($b0/$20/$e6/$20)是在我的中断服务程序的最后一句,是用于通知8259A结束中断,开放硬中断!再次感谢cqbaobao兄!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1826165
请问Delphi中是否支持类似C++的inline函数?
 
我知道Turbo Pascal 支持inline汇编语言和机器语言!一般用它直接访问CPU的寄存器。DELPHI下你可以试一试;
procedure proname;
interrupt;
begin
...
inline($b0/$20/$e6/$20);
end;
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
806
import
I
后退
顶部