彙編預備知識 一

2021-07-22 10:17:53 字數 1744 閱讀 7259

數制:

十進位制:0~9 逢十進一,借一當十

二進位制:0~1 逢二進一,借一當二

十六進製制:0~9和a~f 逢十六進一,借一當十六

數值轉換

二進位制、十六禁止->十進位制

把權值相乘再求累加和就可以得到十進位制。

(1101.11)

2=1*2^3+1*2^2+1*2^0+1*2^(-1)+1*2^(-2)=(13.75)10

(e5a)

16=14*16^2+5*16^1+10*16^0=(3674)10

十進位制整數->二進位制

方法:除二取餘

如:n=(14)

10=(110)2

過程為:

14/2=7 餘數=0 --- d0

7/2=3 餘數=1 --- d1

3/2=1 餘數=1 --- d2

1/2=0 餘數=1 --- d3

所以:n=d3d2d1d0=(1110)2

十進位制純小數->二進位制

方法:乘二取整,直到小數部分為0

如:n=(0.8125)

10=(0.1101)2

過程為:

0.8125*2=1.625 整數部分=1  --- d1

0.625*2=1.25 整數部分=1 --- d2

0.25*2=0.5 整數部分=0 --- d3

0.5*2=1.0 整數部分=1 --- d4

所以,n=(0.1101)2

二進位制->十六進製制

方法:以小數點左右散開,4位二進位制為一組,不足4位補0,每組用等值的十六進製制代替。

如:(1101110.11)

2=(0110 1110.1100)

2=(6e.c)16

補充:在組合語言中十六進製制字尾h表示

所以(1a2b)

16可寫成1a2bh

十六進製制->二進位制

方法:每一位用等值的二進位制代替

如:(17e.58)

16=(0001 0111 1110.0101 1000)

2=(01111110.01011)2

進製說完了,下面說機器數的原碼、反碼和補碼

數x的原碼記作[x]

原,反碼記作[x]

反,補碼記作[x]補

下面全是討論有符號數(最高位為0表示正數,最高位為1表示負數)

例如,當機器字長n=8時:

x=+5=+0000101

則可知:

[x]原=00000101

[x]反=00000101

[x]補=00000101

所以當乙個數為正數的時候:原碼=反碼=補碼

下面再舉個列子:

y=-5=-0000101

則可知:

[y]原=10000101

[y]反=11111010

[y]補=11111011

所以當乙個數為正數的時候:

反碼:符號位不變,其他位取反。

補碼:反碼+1。

注意:

當z=0時

z=+0000000

z=-0000000

都可以,他們的補碼都為00000000

由於補碼的機器數更適合運算,為此計算機中負數都用補碼表示。

這節就到這裡,下一節說明補碼的運算和字元編碼

彙編預備知識 五

實位址模式下儲存器的分段技術及實體地址的形成方法 1儲存分段管理 x86對儲存器採用分段管理,乙個單元的位址由兩個部分組成。寫成 段基址 偏移量 如下面乙個例子 段基址 偏移位址 注意 在乙個邏輯段中,各單元的段基址是相同的。偏移位址是該單元相對於段首的位址偏移量 儲存器及其組成設計 儲存容量 me...

彙編預備知識 六

儲存器的基本組織 1.與cpu的連線 主要是位址線 控制線 資料線的連線。2.多個晶元連線 設計的儲存器容量與實際提供的儲存器多有不符。實際使用時,需要進行字和位擴充套件 多個晶元連線 組成所需的實際的儲存器 總片數 總容量 容量 片數 例如 儲存器容量為8k 8,若選用2114晶元 1k 4 則需...

Linq to sql(一) 預備知識

什麼是linq to sql linq to sql 或者叫dlinq 是linq net語言整合查詢 的一部分,全稱基於關係資料的 net 語言整合查詢,用於以物件形式管理關係資料,並提供了豐富的查詢功能,它和linq to xml linq to objects linq to dataset ...