第1章 數(shù)據(jù)格式及其轉(zhuǎn)換_第1頁
第1章 數(shù)據(jù)格式及其轉(zhuǎn)換_第2頁
第1章 數(shù)據(jù)格式及其轉(zhuǎn)換_第3頁
第1章 數(shù)據(jù)格式及其轉(zhuǎn)換_第4頁
第1章 數(shù)據(jù)格式及其轉(zhuǎn)換_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

教材:IBM-PC匯編語言程序設計主講教師:陳宏聯(lián)系方式:chenhong@

匯編語言程序設計1.沈美明,溫冬嬋.80X86匯編語言程序設計[M].

北京:清華大學出版社.2.PeterAbel.IBMPCAssemblerLanguageandProgramming[M].Prentice—HALL,Inc.3.溫冬嬋,沈美明.IBMPC匯編語言與程序設計例題習題集[M]北京:清華大學出版社.4.王成端.匯編語言程序設計[M].北京:高等教育出版社.參考書目FORTRANBASICCOBOLPASCALC/C++JAVA...匯編語言高級語言機器語言計算機語言的發(fā)展

面向機器的低級語言,通常是為特定的計算機或計算機系列專門設計的。保持了機器語言的優(yōu)點,具有直接和簡捷的特點??捎行У卦L問、控制計算機的各種硬件設備,如磁盤、存儲器、CPU、I/O端口等。目標代碼簡短,占用內(nèi)存少,執(zhí)行速度快,是高效的程序設計語言。經(jīng)常與高級語言配合使用,應用十分廣泛。匯編語言的特點第1章數(shù)據(jù)格式及其轉(zhuǎn)換1.熟悉數(shù)制的基本概念和計算機中常用進位計數(shù)制,掌握R進制的表達和相互轉(zhuǎn)換;2.了解機器數(shù)和帶符號數(shù)的原碼、反碼、補碼表示,掌握ASCII碼和BCD碼的表達及應用;本章要求1.計算機中數(shù)制基本概念、數(shù)制之間相互轉(zhuǎn)換;2.計算機中的數(shù)據(jù)表示、數(shù)據(jù)的基本類型等;本章主要內(nèi)容計劃學時:2學時

表示一個數(shù)值數(shù)據(jù)要有三個要素:

進位計數(shù)制、小數(shù)點和數(shù)的正負符號。按進位方式計數(shù)的數(shù)制叫做進位計數(shù)制,簡稱進位制。一個任意的R進制數(shù)N,都可寫成:

N=KnKn-1…K1K0.K-1K-2…K-m

=Kn·Rn+Kn-1·Rn-1+…+K0·R0+K-1·R-1+…+K-m·R-m

式中m、n為正整數(shù);Ri是對應位的位權(quán);R為對應進制的基數(shù)。1.1進位計數(shù)制【例】:

二進制數(shù)1101.1B=1×23+1×22+0×21+1×20+1×2-1

【例】:

十進制數(shù)567.32D=5×102+6×101+7×100+3×10-1+2×10-2

進位計數(shù)制基數(shù)簡寫數(shù)碼二進制2B0,1八進制8O0,1,2,3,4,5,6,7十進制10D0,1,2,3,4,5,6,7,8,9十六進制16H0,1,2,3,4,5,6,7,8,9A,B,C,D,E,F(xiàn)

所謂基數(shù),就是指在該計數(shù)制中每個數(shù)位Ki可能用到的數(shù)字符號的個數(shù),其系數(shù)可為0~(R-1)。每個數(shù)位計滿R后就向高位進位,即“逢R進一”,在R進制數(shù)中相鄰兩個數(shù)位的權(quán)相差R倍,亦即當小數(shù)點向左移一位時,數(shù)值縮小R倍;而當小數(shù)點向右移一位時,數(shù)值擴大R倍。常用進位計數(shù)制的基數(shù)和符號D01234567B00000001001000110100010101100111H01234567D89101112131415B10001001101010111100110111101111H89ABCDEF二進制、十進制及十六進制對應關(guān)系二進制、八進制對應關(guān)系B000001010011010101110111O012345671.2各種數(shù)制間的相互轉(zhuǎn)換1.2.1R進制數(shù)轉(zhuǎn)換為十進制數(shù)【解】:

101101.01B=1×25+1×23+1×22+1×20+1×2-2=45.2510

權(quán)數(shù)碼【例】:把101101.01B轉(zhuǎn)換成十進制數(shù)?!纠浚簩⑹M制數(shù)3A9.3CH轉(zhuǎn)換成十進制數(shù)。【解】:(3A9.3C)16=3×162+10×161+9×160+3×16-1+12×16-2=768+160+9+0.1875+0.046875=(937.234375)10

方法:按權(quán)相加

N=Kn·Rn+Kn-1·Rn-1+…+K0·R0+K-1·R-1+…+K-m·R-m

1.2.2十進制數(shù)轉(zhuǎn)換為二進制數(shù)●降冪法

轉(zhuǎn)換方法:先給出要轉(zhuǎn)換的十進制數(shù),其次寫出所有小于此數(shù)的各位二進制權(quán)值,然后用要轉(zhuǎn)換的十進制數(shù)減去與它最相近的二進制權(quán)值,如夠減則減去并在相應位記1;否則,該位記0并跳過此位;如此反復,直到該數(shù)為0為止。●乘(小數(shù))除(整數(shù))法除法:把要轉(zhuǎn)換的十進制的整數(shù)部分不斷除以2,并記下余數(shù),直到商為0為止。乘法:把要轉(zhuǎn)換的十進制的小數(shù)部分不斷乘以2,并記下其整數(shù)部分,直到結(jié)果小數(shù)部分為0或達到精度要求為止?!窠祪绶ㄐ∮?17D的二進制權(quán)為:

6432168421轉(zhuǎn)換結(jié)果:計算過程:

117-26=117-64=53(a6=1)1

53-25=53-32=21(a5=1)

53-24=21-16=5(a4=1)11

5-22=5–4=1(a2=1)1-20=1–1=0(a0=1)

(a3=0)

(a1=0)0101【例】:把N=117D轉(zhuǎn)換成二進制數(shù)?!癯ㄉ逃鄶?shù)計算過程117/2=58(a0=1)58/2=29(a1=0)29/2=14(a2=1)14/2=7(a3=0)7/2=3(a4=1)3/2=1(a5=1)1/2=0(a6=1)【例】:把N=117D轉(zhuǎn)換成二進制數(shù)?!?/p>

N=117D=1110101B?!纠浚喊袾=48956D轉(zhuǎn)換為十六進制數(shù)。●降冪法小于N的十六進制權(quán)值為:4096256161計算過程:

48956-11×4096=3900

3900-15×256=6060-3×16=1212-12×1=0∴N=48956D=BF3CH1.2.3十進制數(shù)轉(zhuǎn)換為十六進制轉(zhuǎn)換結(jié)果(H)

B

F

3

C【例】:把N=48956D轉(zhuǎn)換為十六進制數(shù)?!癯ㄓ嬎氵^程:余數(shù)48956/16=3059(a0=12→C)3059/16=191(a1=3→3)191/16=11(a2=15→F)11/16=0(a3=11→B)∴N=48956D=BF3CH十進制數(shù)轉(zhuǎn)換為十六進制轉(zhuǎn)換方法:(B→H)

由于十六進制數(shù)是2的冪,所以這兩種數(shù)制之間的轉(zhuǎn)換十分容易,即4個二進制數(shù)表示一個十六進制數(shù)。具體方式,以小數(shù)點為中心,整數(shù)部分從小數(shù)點開始往左,4個二進制數(shù)為一組,不足位補零。小數(shù)部分從小數(shù)點開始往右,4個二進制數(shù)為一組,不足為補零?!纠?把11010110111111.010011B轉(zhuǎn)換成十六進制數(shù)。0011,0101,1011,1111.0100,110035BF4C∴

11010110111111.010011B

=35BF.4CH1.2.4二進制和十六進制之間的轉(zhuǎn)換轉(zhuǎn)換方法:(H→B)

由于十六進制數(shù)是2的冪,所以一個十六進制數(shù)用4個二進制數(shù)表示。具體方式,以小數(shù)點為中心,整數(shù)部分從小數(shù)點開始往左,1個十六進制數(shù)符用4個二進制數(shù)表示,零不能缺省。小數(shù)部分從小數(shù)點開始往右,1個十六進制數(shù)符用4個二進制數(shù)表示,零不能缺省。轉(zhuǎn)換完成后,整數(shù)部分最高位的零可以省略,小數(shù)部分最低位的零也可以省略?!纠?把7A9.64H轉(zhuǎn)換成二進制數(shù)。7A9.6401111010100101100100∴

7A9.64H

=11110101001.011001H二進制和十六進制之間的轉(zhuǎn)換r進制數(shù)運算基本規(guī)則:逢r進一即:十進制數(shù):逢十進一二進制數(shù):逢二進一十六進制數(shù):逢十六進一二進制數(shù)運算規(guī)則:加法:

0+0=0,0+1=1,1+0=1,1+1=0(進位1)乘法:

0×0=0,0×1=0,1×0=0,1×1=1二進制和十六進制數(shù)的運算十六進制數(shù)運算例:計算199H+51H=?199H

+51H

1EAH例:計算5C3H+3D25H=?05C3H

+3D25H

42E8H例:計算3D25H-5C3H=?3D25H

-05C3H

3762H1.3.1機器數(shù)與真值

在機器中,把一個數(shù)連同其符號在內(nèi)數(shù)值化表示的數(shù),稱為機器數(shù)。一般用最高有效位來表示數(shù)的符號(正負),正數(shù)用“0”表示,負數(shù)用“1”表示。

D0D7最高位機器字長為8D0D15最高位機器字長為161.3數(shù)的符號表示●機器數(shù)常用的碼制有原碼、反碼和補碼。

原碼表示法:符號+絕對值【例】:設機器字長為n,若n=8,給出+3,-3,+0,-0的原碼。[+3]原碼=0000,0011=03H[-3]原碼=1000,0011=83H[+0]原碼=0000,0000=0H[-0]原碼=1000,0000=80H

◆◆注意:在原碼表示中,零不唯一!數(shù)的表示范圍(整數(shù)):1.3.2數(shù)的原碼表示反碼表示法:正數(shù)的反碼同原碼,負數(shù)的反碼數(shù)值位與原碼相反,符號位為”1”?!纠浚涸O機器字長為n,若n=8,給出+3,-3,+0,-0的反碼。[+3]反碼=0000,0011=03H[-3]反碼=1111,1100=FCH[+0]反碼=0000,0000=0H[-0]反碼=1111,1111=FFH

數(shù)的表示范圍(整數(shù)):注意:在反碼表示中,零不唯一!1.3.3反碼表示法1.3.4補碼表示法

正數(shù)的表示與原碼一樣。負數(shù)X的表示可以用公式描述:數(shù)的表示范圍(整數(shù)):對不同機器字長n=8,16,32,64,其表數(shù)范圍為:n=8:n=16:n=32:n=64:負數(shù)的補碼表示

處理方法:(1)寫出與該負數(shù)相對應的正數(shù)的補碼;(2)按位求反;(3)末位加一?!纠浚簷C器字長為8位,則-64D的補碼表示為:+64D的補碼:01000000按位求反:10111111末位加1:11000000用十六進制表示:C0【例】:機器字長為16位,則N=-126D的補碼表示:+126D的補碼:0000000001111110

按位求反:1111111110000001

末位加1:1111111110000010

用十六進制表示:FF82

【例】:機器字長為16位,則N=-117D的補碼表示:+117D的補碼:0000000001110101按位求反:1111111110001010末位加1:1111111110001011用十六進制表示:FF8B

十進制數(shù)的二進制編碼稱為BCD碼。引入BCD碼的目的是為解決日常習慣的十進制數(shù)與機器內(nèi)的二進制數(shù)之間的矛盾,使十進制數(shù)與二進制數(shù)之間的轉(zhuǎn)換更為方便。最常用的是8421BCD碼。它對每一位十進制數(shù)碼用4位二進制編碼來表示,十進制數(shù)的0~9分別對應于0000~1001。十進制數(shù)的7368用8421BCD碼表示為:

0111

0011

0110

1000BCD碼有壓縮BCD碼和非壓縮BCD碼二種形式,壓縮BCD碼的每個字節(jié)存放兩位BCD碼,而非壓縮BCD碼的每個十進制數(shù)字占用一個字節(jié)的低4位,其高4位的內(nèi)容不代表BCD的信息。1.3.5BCD碼【例】寫出十進制數(shù)31的壓縮BCD碼和非壓縮BCD碼。

【解】

31的壓縮BCD碼為:0011

000131的非壓縮BCD碼為:00000011

00000001

十進制數(shù)字的8421BCD碼十進制數(shù)字8421BCD碼十進制數(shù)字8421BCD碼00000501011000160110200107011130011810004010091001

標準的ASCII碼共128個字符,分為二類:非打印的和可打印的ASCII碼。非打印ASCII碼:這類編碼用于控制性代碼,共33個。如:BEL(響鈴,07H),

DEL(刪除,7FH),

CR(回車,0DH),

LF(換行,0AH)等??纱蛴SCII碼:共有95個。其中有:數(shù)字0~9的編碼30H~39H

大寫字母A~Z的編碼41H~5AH

小寫字母a~z的編碼61H~7AH

空格(Space)的編碼20H

1.3.6字符編碼●求補運算:對一個二進制數(shù)按位求反、末位加一的運算稱為求補運算。補碼數(shù)具有的特征:[X]補碼

[-X]補碼

[X]補碼也可以表示為:[[X]補]補=[-X]補

【例】:[117]補=0075H,[-117]補=FF8BH[117]補為0000000001110101

按位求反1111111110001010

末位加11111111110001011FF8B=[-117]補補碼的加法和減法求補求補【例】:[117]補=0075H,[-117]補=FF8BH[-117]補為:1111111110001011

按位求反:0000000001110100

末位加1:00000000011101010075=[117]補即:[117]補碼

[-117]補碼

[117]補碼也可以表示為:[[117]補]補=[-117]補

求補運算根據(jù)補碼的這一特性,可以得到補碼加法和減法的表示:補碼的加法和減法補碼的加法規(guī)則:補碼的減法規(guī)則:設機器字長n=8[25]補=00011001[32]補=00100000[-25]補=11100111[-32]補=1110000025+32=5700011001

+001000000011100125+(-32)=-700011001

+1110000011111001-25-32=(-25)+(-32)=-5711100111

+11100000

111000111丟棄補碼的加法和減法進位和溢出進位:由于運算結(jié)果超出了位數(shù),最高有效位向前的進位,這一位自然丟失,一般不表示結(jié)果的對錯。溢出:表示結(jié)果超出了字長允許表示的范圍,一般會造成結(jié)果出錯。例:仍設機器字長為8(-64)1100000012701111111

+6401000000

+100000001010000000012810000000

進位

溢出補碼的加法和減法“與”運算(AND)“或”運算(OR)

ABA

BABA

B

000

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論