初學(xué)匯編

今天第一次接觸匯編,從進(jìn)制轉(zhuǎn)換開始復(fù)習(xí)。
其實(shí)這些東西在大學(xué)的時(shí)候就應(yīng)該打好基礎(chǔ)。

常見的進(jìn)制

  • 二進(jìn)制,由0、1組成,逢二進(jìn)一
  • 八進(jìn)制,由0-7八個數(shù)字組成,逢八進(jìn)一
  • 十進(jìn)制,由0-9十個數(shù)字組成,逢十進(jìn)一
  • 十六進(jìn)制,由0-9,A-F十六個字符組成逢十六進(jìn)一

只要理解每個進(jìn)制的進(jìn)一規(guī)則,那運(yùn)算起來就了如指掌。
以八進(jìn)制舉例:
逢八進(jìn)一,當(dāng)數(shù)字大于等于8時(shí),進(jìn)一位,如果10進(jìn)制的逢十進(jìn)一。
以下均為八進(jìn)制數(shù):
4 + 6 = 12
6 + 6 = 14
277 + 333 = 632

位、字節(jié)、原碼、反碼、補(bǔ)碼:

計(jì)算機(jī)最小運(yùn)算單位是bit,位。
byte表示一個字節(jié),1byte = 8bit
Java中是以補(bǔ)碼來表示二進(jìn)制
Java中聲明一個byte類型的變量,其大小范圍是-128 ~ 127

byte b = 127;   // ok
byte c = 128;   // error

原因是byte類變量只有一個字節(jié),即上面聲明的b變量,只在內(nèi)存中占用8位,并且最高位是符號位。即:

//最高位符號位: 0表示整數(shù),1表示負(fù)數(shù)
//最大正數(shù)
byte max = 127;  //內(nèi)存:0111 1111(補(bǔ)碼)

//最小負(fù)數(shù)
byte min = -128; //內(nèi)存:1000 0000(補(bǔ)碼)

//有一點(diǎn)需要注意的是,該二進(jìn)制表示的是補(bǔ)碼
//介紹一下原碼、反碼、補(bǔ)碼
//原碼:二進(jìn)制定點(diǎn)表示法,即最高位為符號位,“0”表示正,“1”表示負(fù),其余位表示數(shù)值的大小
//反碼:正數(shù)的反碼與其原碼相同;負(fù)數(shù)的反碼是對其原碼逐位取反,但符號位除外
//補(bǔ)碼:正數(shù)的補(bǔ)碼與其原碼相同;負(fù)數(shù)的補(bǔ)碼是在其反碼的末位加1,另外計(jì)算一個數(shù)的補(bǔ)碼,可取其絕對值的原碼,每一位取反并加1。

通用寄存機(jī)

編譯器在運(yùn)行過程中,生成的變量會存在三個地方:CPU(寄存器位于其中),內(nèi)存,硬盤

32位CPU中(05年以后的電腦,大多都64位的)有3種寄存器:

  • 8位
  • 16位
  • 32位(包含8種通用寄存器,EIP不是通用寄存器
    1. EAX
    2. ECX
    3. EDX
    4. EBX
    5. ESP
    6. EBP
    7. ESI
    8. EDI

指令學(xué)習(xí)

MOV EAX,1 //將立即數(shù)(1)存到指定的寄存器(EAX)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容