一、基礎
資訊以位元組為單位儲存,即byte。
1個byte有8個bit,從高到低是7 6 5 4 3 2 1 0。
第7最高,叫msb,most significant bit。
第0最低,叫lsb,least xx。
32位cpu一次操作可以處理32bit個二進位制位。因此需要比位元組更大的單位。
比如:字(16bit)、雙字(32bit)
如果超過了1個byte,就有個儲存順序的問題。
inter存乙個字,比如0x60 25,存的時候是0x25 0x60的順序,這是little endian的方式。
inter不要求字的位址是偶數,如果是偶數,則是乙個對準字,如果不是,則稱為未對準字。
對應的有big endian方式。在程式設計前這是首先應該搞清楚的問題。
資料表示
有符號整數用補碼。如果用乙個字表示乙個數,當然有範圍問題。
無符號數0~65535
有符號:-32768 ~32767
存正整數正常存,存負整數時儲存的是數的絕對值取反加1。比如,儲存-466,
0000 0001 1101 0010 =446
1111 1110 0010 1101 取反
1 加1
----------
1111 1110 0010 1110 實際儲存的數,按照little endian儲存,則0010 1110在前,1111 1110在後。
字元表示需要有乙個對映表,ascii最常用。用7個bit來表示字元。
漢字表示,中國是gb2312-80標準。用兩個byte表示乙個漢字。標準映**了6763個漢字,分成94個區,每區94個位,編號從0xa0開始,不占有ascii 0x00~0x7f。每個漢字有唯一的區碼和位碼。
unicode是另一種字元對映,它將全世界的字元都包括進來,也使用2個byte。
bcd碼,目的是將資料的輸入和輸出變得簡單。存466時,如果用乙個字,則
466 =0001 1101 0010 =0x01 d2
如果用bcd,則之間看成0x04 0x66分別進行儲存就行了,這是壓縮bcd碼。
如果不壓縮,則看成0x04 0x06 0x06分別儲存。
inter系列cpu支援bcd形式數字處理的指令。
開始學習win32彙編
前段時間對於csdn的部落格系統徹底失望,在我現在寫的東西都還不知道能不能正常發出去,鬱悶,加上過年有這麼久沒有來了。這段時間開始學習彙編,說到彙編,大學開過兩門相關課程,微機原理和微控制器都是學這方面的,不過那都是8086,51級別的彙編,感覺根本跟不上時代,那時候學的還不錯 現在想學習學習win...
Win32彙編基礎
常用指令 mov 目標運算元,源運算元 mov eax,0x0 進行資料傳遞 movzx mov zero x 以0填充高位,用法同上,push poppushad 所有暫存器壓棧 8個 popad 所有暫存器出棧 8個 lea 取位址指令,類似c語言中的 call 呼叫函式指令 add 加 sub...
Win32彙編 實數
386 選擇的處理器 model flat,stdcall option casemap none 指明識別符號大小寫敏感 include kernel32.inc 要引用的標頭檔案 includelib kernel32.lib 要引用的庫檔案 includelib msvcrt.lib 引用c庫...