其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

Delphi的位操作以及嵌入式汇编[1]


发布日期:2020年05月05日
 
Delphi的位操作以及嵌入式汇编[1]

每个学习C的朋友都会被告之C是中级语言其位操作非常方便而Pascal之流只适用于教学但是Delphi中提供了一组位操作可别以过去对Pascal的态度看Delphi

* 按位的逻辑操作

Delphi中的ANDORNOT可不仅仅只对逻辑表达式有作用它们还可以操作数

AND按位与 AND 其结果为

OR按位或 OR 其结果为

Not按位取反如Not 其结果对于有符号数是-对于无符号数是

另外还有按位异或XOR XOR 结果为

* 移位操作

Delphi提供了SHL和SHR进行移位左移和右移

例如 SHR表示按位右移一位结果为

* Delphi中的数

既然有位的操作就一定涉及到数的类型是有符号数(头一位用表示正负)还是无符号数

Delphi中Shortint(位)Smallint(位)Longint(位)Integer(位)Int位)是有符号数而Byte(位)Word(位)Longword(位)是无符号数它们之间可以像C一样强制转换例如Smallint类型的-转换成Word类型就是转换方法是Word(-

怎样够全吧^_^!什么还不够……!?Delphi还有一招接招吧……

Delphi的嵌入式汇编

Delphi中提供了几乎全部常用汇编指令的支持MOVJEJMPCMPSHLSHRSALSARPOPPUSHHLT……自己去查吧至于INT也能识别不过非法操作或死机可别找我(在最早的Windows中用Delphi 似乎可以正确运行中断但Windows OEMWindows 就不对了大概是位模块的问题还搞不清楚)

* 嵌入式汇编的格式

Delphi是使用ASM……END来标志汇编语句

ASM

mov al

mov blal

END;

* 可操作的寄存器

Delphi可用汇编管理以下寄存器

位寄存器EAX EBX ECX EDX ESP EBP ESI EDI

位寄存器AX BX CX DX SP BP SI DI

位寄存器AL BL CL DL AH BH CH DH

位段寄存器CS DS SS ES

以及协处理器寄存器堆栈 ST

* 使用汇编前的工作

教汇编的老师一再强调使用汇编要保存寄存器现场(保存使用前的寄存器状态使用Push压栈和Pop从栈中弹出)不过这一切对于Delphi的嵌入式汇编是没有必要的(除非你自己要使用Push和Pop)因为Delphi已经帮你做了不必担心会使数据丢掉

[] [] []

               

上一篇:delphi 2007 for win32试用笔记

下一篇:Delphi的位操作以及嵌入式汇编[3]