熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi的位操作以及嵌入式匯編[1]

2013-11-23 17:41:39  來源: Delphi編程 

  每個學習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已經幫你做了不必擔心會使數據丟掉

[]  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/24900.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.