Aim:
1、ASM language 第二章
2、瞭解I1864s的功能和結構,查看自己是否OK
Learn:
1、ASM 基礎文字說明
EAX:the extended accumulator register(額外的累加計數器),自動被乘法和除法應用.
ECX:the extended count register,被CPU自動作爲循環計數器使用
ESP:the extended stack pointer register,地址數據在堆棧中(a system memory structure).不能被用作普通算法和數據偏移.
ESI和EDI:the extended source index and extended destination index registers,被用作高速內存偏移指令.
EBP:the extended frame pointer register被用作堆棧上的高級語言的形參和臨時變量,除非在高級編程中,否則不應被用作平常算法或數據偏移.
Segment Registers(段寄存器):被用作預分配內存,一些段管理代碼指令,一些管理變量,還有個堆棧段管理臨時變量和形參
EIP:instruction pointer register 包含下一個執行指令的地址。一些機器指令操作這個地址,致使程序跳到一個新的地址
EFLAGS Register:又單獨的二進制bit組成,二進制bit管理CPU操作或者一些CPU操作的輸出。有機器指令可以測試和操作進程flags
Control Flags:在EFLAGS寄存器中的單獨的bit可以控制CPU操作
Status Flags:反應CPU算法和邏輯操作的輸出。
CF(Carry flag):當一個未標識的算法操作太大超出目的地時被設置
OF(Overflow flag):當一個標識的算法操作太大或太小溢出時被設置
SF(Sign flag):當算法或邏輯操作產生結果爲負時被設置
ZF(zero flag):當算法或邏輯操作產生結果爲零時被設置
AC(Auxiliary Carry flag):當算法或邏輯操作在一個8-bit操作時,將一個carry從bit3移到bit4時被設置
PC(Parity flag):統計一個數據中的設置bit位,提示結果爲奇數或偶數
FPU(Floating-Point Unit):表示高速浮點算法。8個浮點數據寄存器:ST(0),...,ST(7)
2、說明
在20-bit線性地址機器中,將地址使用16-bit段和16-bit偏移來表示:
16-bit段:CS(code segment), DS(data segment), SS(Stack segment), ES(segment),
16-bit偏移
IA-32支持分頁,允許段被分成4096-byte的一塊塊,可使程序同一時間使用所有內存(比機器實際物理內存要大很多)。機器分配的頁面被稱爲虛擬內存
分頁技術是爲了虛擬內存,分段是爲了保護各自獨立數據(如類中的私有成員)
Questions
1、vector和list使用的條件分別是什麼
vector可視作數組,可以直接操作指定序列數據,便於讀取數據;
list可視作雙向鏈表,插入和刪除比較方便。
2、CRC結果爲何是不重複數據
T(x) = A(x)g(x) //A(x)爲x的K次數據表達式, g(x)爲x的R次數據表達式
= (x^R)*m(x) + r(x) //m(x)爲x的K次表達式,r(x)爲x 的R-1次數據表達式
(x^R)*m(x)%g(x) = r(x) 爲定值`
//X5代表Bit5,X12代表Bit12,1 自然是代表 Bit0,X16 比較特別,是指移位寄存器移出的數據,即圖中的DATA OUT。
//可以這樣理解,與數據位做XOR運算的是上次 CRC值的 Bit15
USHORT crc16l(UCHAR *pData,CHAR len) // ptr 爲數據指針,len 爲數據長度
{
UCHAR *ptr = pData ;
USHORT crc= 0;
UCHAR i;
while(len--)
{
for(i=0x80; i!=0; i>>=1) //0x80=1000 0000 binary,比較最高位
{
if((crc&0x8000)!=0) //最高位爲1則作異或,否則往左偏移一位
{
crc<<=1;
crc^=0x1021;
} //1-1
else
crc<<=1; //1-2
if((*ptr&i)!=0) //若數據最高位爲1則作異或,否則進入下一次比較
crc^=0x1021; //1-3
}
ptr++;
}
return crc;
}
其中一種,CRC-CCITT,初始值爲0x00。CCITT比較後不同結果原因在於初始值的選擇不同而已
2010-7-26
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.