程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 學 Win32 匯編 [16]: 常用寄存器的常規功能

學 Win32 匯編 [16]: 常用寄存器的常規功能

編輯:Delphi
通用寄存器 EAX 累加(Accumulator)寄存器 AX(AH、AL) 常用於乘、除法和函數返回值 EBX 基址(Base)寄存器 BX(BH、BL) 常做內存數據的指針 ECX 計數器(Counter)寄存器 CX(CH、CL) 常做字符串和循環操作中的計數器 EDX 數據(Data)寄存器 DX(DH、DL) 常用於乘、除法和 I/O 指針 ESI 來源索引(Source Index)寄存器 SI 常做內存數據指針和源字符串指針 EDI 目的索引(Destination Index)寄存器 DI 常做內存數據指針和目的字符串指針 ESP 堆棧指針(Stack Point)寄存器 SP 只做堆棧的棧頂指針; 不能用於算術運算與數據傳送 EBP 基址指針(Base Point)寄存器 BP 只做堆棧指針, 可以訪問堆棧內任意地址, 經常用於中轉 ESP 中的數據; 不能用於算術運算與數據傳送 指令指針寄存器 EIP 指令指針(Instruction Pointer)寄存器 總是指向下一條指令的地址; 所有已執行的指令都被它指向過. 標志寄存器 EFLAGS

  標志(Flag)寄存器:
EFLAGS 中的 32 位被分成 0-31 個二進制位分別使用;
第 0、2、4、6、7、11 位是狀態標志位;
第 10 位是字符串操作控制標志位;
其他標志位一般不用或無權使用
 

0 CF 進位(Carry)標志 目標無法容納無符號算術運算的結果, 需要進位或借位時被設置; 可用 STC 指令設置, CLC 指令取消. 1       2 PF 奇偶(Parity)標志 低 8 位中有偶數個 1 時被設置 3       4 AF 輔助(Auxiliary)標志 使用 BCD 碼運算導致 3 位到 4 位產生進位時被設置 5       6 ZF 零(Zero)標志 運算結果為 0 時被設置 7 SF 符號(Sign)標志 運算結果為負數時被設置 8       9       10 DF 方向(Direction)標志 字符串操作是從高位到低位時被設置; 可用 STD 指令設置, CLD 指令取消. 11 OF 溢出(Overflow)標志 因有符號運算的結果太寬而導致數據丟失時被設置 ...       31       ...          

其中的 EAX、ECX、EDX 三個寄存器相對自由些, 所以練習時用它們較多.

沒理會段寄存器: CS、DS、SS、ES、FS、GS, 是因在 Win32 保護模式下編程它們不再重要了.

還有 FPU、MMX 系列寄存器, 等用到再說吧.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved