彙編01 基礎知識

2021-06-13 13:51:45 字數 3352 閱讀 9387

教材:80x86組合語言程式設計教程  楊季文、錢培德等編著  清華大學出版社

第一章  基礎知識

掌握的兩個要點:一是各進製的轉換,而是資料、非資料的表示和資料的型別

一、各進製的轉換

1、二進位制數和十六進製制數

在計算機裡,通常用數字後面跟乙個英文本母表示該數的數字

十進位制數一般用d,二進位制數用b,八進位制數用o,十六進製制數用h來表示,例如:1010b,1115d,058ah等

2,十六進製制數及其與二進位制、十進位制數之間的轉換

(1)十進位制數轉換為二進位制數或十六進製制數

用除以2或16取餘法

(2)二進位制數或十六進製制數轉換為十進位制數

各位二進位制數碼或十六進製制數碼乘以與其對應的權之和

<=權展開

例:11001b=1*2^4+1*2^3+0*2^2+0*2^1+1*2^0=25d

(3)十六進製制數和二進位制數之間的轉換

乙個二進位制數,把它從低位到高位每4位組成一組,直接用十六進製制數來表示

例:0011010110111111b轉換為十六進製制數

0011  0101  1011  1111

3        5         b        f

所以轉換為十六進製制數的結果為 35bfh

二、資料的表示

計算機中儲存資訊的最小單位稱為  位 ,在絕大數系統中他只能表示兩種狀態,這兩種狀態分別代表0和1.

計算機系統內部採用二進位制表示數值資料,也採用二進位制編碼表示非數值資料和指令

1、數的補碼表示(有符號數)

把乙個數連同其符號在內 在機器中的表示加以數值化,這種數稱為 機器數

一般用最高有效位來表示數的符號: 正數用 0 表示,負數用 1 表示

機器數可以用不用的碼制來表示,常用的有原碼、補碼和反嗎表示法

補碼表示法中,正數採用符號+絕對值表示:

例:假設機器字長為8位,則[+1]補=00000001,[+127]補=01111111,[+0]補=00000000

當用補碼表示法來表示負數時:負數x用2^n-[x]表示,其中n為機器的字長

例:當n=8時,[-1]補=2^8-1=11111111,[-127]補=2^8-127=10000001

在補碼表示法中0只有一種表示,即00000000.

對於10000000這個數,在補碼表示法中被定義為-128

採用補碼形式表示的有符號數,那麼n位二進位制數能夠表示:有符號整數的範圍為: -2^(n-1)<=n<=+2^(n-1)-1 

8位表示數的有符號整數的範圍為-128~+127即(10000000~01111111)

16位表示的有符號整數的範圍是: -32768~+32767

1'1補充----補碼

1,在計算機系統中,數值的一律用補碼表示(儲存):使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補碼表示的數相加時,如果符號位有進製,則進製被捨棄。

2,補碼與原碼的轉換過程幾乎是相同的:

求給定數值的補碼表示分以下兩種情況:

(1)正數的補碼:與原碼相同。

(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1

2,、無符號整數

在某些情況下,要處理的數全是正數,此時再保留符號位就沒意義了。

因此,n位二進位制數能夠表示的無符號整數的範圍是:0<=n<=2^n-1

8位無符號數表示的範圍是0<=n<=255

16位無符號數表示的範圍是0<=n<=65535

3,符號擴充套件

把n位二進位制數擴充套件成m為二進位制數(m>n)

當要擴充套件的數是無符號數時,只要在最高位前擴充套件(m-n)個0

如果要擴充套件的數是有符號數,並且採用補碼形式表示,進行符號擴充套件

例:-3的8位二進位制補碼和16位二進位制補碼如下:

11111101       8位

1111111111111101     16位

4,補碼的加法和減法

對於乙個正數的補碼表示 ,按位求反後再在末位加 1 ,可以得到與此正數相應的負數的補碼表示

把這種對乙個二進位制數按位求反後在末位加 1 的運算稱為  求補運算。

因此可以得到以下特性:

補碼的加法規則: [x+y]補=[x]補+[y]補

補碼的減法規則: [x-y]補=[x]補+[-y]補

例:用8位二進位制補碼計算:25+(-32)

25                    00011001

+(-32)               + 11100000

-7                    11111001

三、非數值資料的表示

計算機除了處理數值資料外,還要處理大量的非數值資料,如文字資訊和圖表資訊等。為此必須對非數值資料進行編碼。這樣不僅計算機能夠方便地處理和儲存它們,而且還可以賦予它們數值資料的某些屬性

1、ascⅱ 碼

是目前國際上比較通用的字元二進位制編碼,微型計算機也普遍採用它作為字元的編碼。擴充套件的ascⅱ碼使用8位二進位制進行編碼,可以表示256個字元

例:鍵盤上的空格符16位ascⅱ碼表示是:20h

數字0的16位ascⅱ碼是:30h

英文小寫字母a的16位ascⅱ碼是:61h

英文大寫字母a的16位ascⅱ碼是:41h

2、變形國際碼

為使計算機能處理漢字資訊,就必須對漢字進行編碼

國際碼是16位編碼,高8位表示漢字元的區號,低8位表示漢字元的位號 

變形的國際碼的第7位和第15位給賦值為1.

在國標碼上加8080h就形成了變形的國標碼

四、基本資料型別

計算機訪問的以二進位制表示的資訊位數一般是8的倍數,它們有如下專門的名稱:

1,、位元組

乙個位元組由8個二進位制位組成

位元組的最低位一般稱為第0位,最高位稱為第7位,如下: 7 6 5 4 3 2 1 0 <=乙個位元組

通常,硬體儲存器的每一儲存單元就由8個二進位制位組成,即可用於儲存乙個位元組的資訊

乙個位元組足以表示乙個ascⅱ字元,也可以表示乙個擴充套件的ascⅱ字元。

乙個位元組可分成2個4位的位組,稱為 半位元組

2、字2個位元組(即16個二進位制位)組成乙個字,字的最低位稱為0位,最高位稱為第15位。

字的低位稱為低位元組,高位稱為高位元組

3、雙字

雙字由2個字組成,即包含32個二進位制位

低16位稱為低字,高16位稱為高字

雙字能表示的資料的範圍更大

4,、四字

四字就是由四個字組成,包含64個二進位制位

5,、十字節

由10個位元組組成,含80個二進位制位,可用於儲存非常大的數或表示較多的資訊

6、字串

字串是指由字元構成的乙個線性陣列。通常每個字元用乙個位元組表示,有時每個字元也可以用乙個字或雙字來表示

彙編基礎知識

最近感覺自己學的到了乙個瓶頸,學的不知道有多少是記住的,總是感覺自己要學的東西有那麼多,時間又太少。專業課也越來越多,花在程式設計上的時間就少了,但是這畢竟是我的興趣愛好,所以我不想放棄。昨晚突然有個想法,以後寫部落格的頻率加快,儘管這樣部落格的質量也就下降了很多,但是我還是覺得部落格就是來記錄我成...

彙編 基礎知識

一 進製數的表示 十進位制後加d,二進位制後加b,八進位制加o,十六進製制加h 二 十進位制數轉換為二進位制數或十六進製制數 使用除2取餘法或使用除16取餘法,結果向上讀,如4,得餘數0 0 1,則相應二進位制為100,十六進製制數類似 三 二進位制數或十六進製制數轉換為十進位制數 使用權的展開式 ...

彙編基礎知識

1.si和di 功能和bx相似,只是不能分成2個8暫存器使用。2inc ax指令 將暫存器的內容加1 mov ax,0 inc ax 執行完畢ax 1 3.bx,si,di,bp暫存器 cpu的核心是暫存器,學習彙編這麼一段時間,我也深刻體會到對暫存器理解的重要性 1 在8086cpu中,只有這4個...