第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ù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

匯編語言程序設(shè)計(jì)1.沈美明,溫冬嬋.80X86匯編語言程序設(shè)計(jì)[M].

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

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

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

進(jìn)位計(jì)數(shù)制、小數(shù)點(diǎn)和數(shù)的正負(fù)符號(hào)。按進(jìn)位方式計(jì)數(shù)的數(shù)制叫做進(jìn)位計(jì)數(shù)制,簡(jiǎn)稱進(jìn)位制。一個(gè)任意的R進(jìn)制數(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是對(duì)應(yīng)位的位權(quán);R為對(duì)應(yīng)進(jìn)制的基數(shù)。1.1進(jìn)位計(jì)數(shù)制【例】:

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

【例】:

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

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

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

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

權(quán)數(shù)碼【例】:把101101.01B轉(zhuǎn)換成十進(jìn)制數(shù)?!纠浚簩⑹M(jìn)制數(shù)3A9.3CH轉(zhuǎn)換成十進(jìn)制數(shù)?!窘狻浚海?A9.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十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)●降冪法

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

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

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)換成二進(jìn)制數(shù)?!癯ㄉ逃鄶?shù)計(jì)算過程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)換成二進(jìn)制數(shù)?!?/p>

N=117D=1110101B。【例】:把N=48956D轉(zhuǎn)換為十六進(jìn)制數(shù)。●降冪法小于N的十六進(jìn)制權(quán)值為:4096256161計(jì)算過程:

48956-11×4096=3900

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

B

F

3

C【例】:把N=48956D轉(zhuǎn)換為十六進(jìn)制數(shù)。●除法計(jì)算過程:余數(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十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制轉(zhuǎn)換方法:(B→H)

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

11010110111111.010011B

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

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

7A9.64H

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

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

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

+51H

1EAH例:計(jì)算5C3H+3D25H=?05C3H

+3D25H

42E8H例:計(jì)算3D25H-5C3H=?3D25H

-05C3H

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

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

D0D7最高位機(jī)器字長(zhǎng)為8D0D15最高位機(jī)器字長(zhǎng)為161.3數(shù)的符號(hào)表示●機(jī)器數(shù)常用的碼制有原碼、反碼和補(bǔ)碼。

原碼表示法:符號(hào)+絕對(duì)值【例】:設(shè)機(jī)器字長(zhǎng)為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ù)的反碼同原碼,負(fù)數(shù)的反碼數(shù)值位與原碼相反,符號(hào)位為”1”。【例】:設(shè)機(jī)器字長(zhǎng)為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補(bǔ)碼表示法

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

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

按位求反:1111111110000001

末位加1:1111111110000010

用十六進(jìn)制表示:FF82

【例】:機(jī)器字長(zhǎng)為16位,則N=-117D的補(bǔ)碼表示:+117D的補(bǔ)碼:0000000001110101按位求反:1111111110001010末位加1:1111111110001011用十六進(jìn)制表示:FF8B

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

0111

0011

0110

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

【解】

31的壓縮BCD碼為:0011

000131的非壓縮BCD碼為:00000011

00000001

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

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

DEL(刪除,7FH),

CR(回車,0DH),

LF(換行,0AH)等。可打印ASCII碼:共有95個(gè)。其中有:數(shù)字0~9的編碼30H~39H

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

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

空格(Space)的編碼20H

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

[-X]補(bǔ)碼

[X]補(bǔ)碼也可以表示為:[[X]補(bǔ)]補(bǔ)=[-X]補(bǔ)

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

按位求反1111111110001010

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

按位求反:0000000001110100

末位加1:00000000011101010075=[117]補(bǔ)即:[117]補(bǔ)碼

[-117]補(bǔ)碼

[117]補(bǔ)碼也可以表示為:[[117]補(bǔ)]補(bǔ)=[-117]補(bǔ)

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

+001000000011100125+(-32)=-700011001

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

+11100000

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

+6401000000

+100000001010000000012810000000

進(jìn)位

溢出補(bǔ)碼的加法和減法“與”運(yùn)算(AND)“或”運(yùn)算(OR)

ABA

BABA

B

000

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論