匯編程序設(shè)計(jì)第1章基礎(chǔ)知識(shí)_第1頁(yè)
匯編程序設(shè)計(jì)第1章基礎(chǔ)知識(shí)_第2頁(yè)
匯編程序設(shè)計(jì)第1章基礎(chǔ)知識(shí)_第3頁(yè)
匯編程序設(shè)計(jì)第1章基礎(chǔ)知識(shí)_第4頁(yè)
匯編程序設(shè)計(jì)第1章基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

主講教師:陳宏

匯編語(yǔ)言程序設(shè)計(jì)第一頁(yè),共三十九頁(yè)。1.沈美明,溫冬嬋.80X86匯編語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社.2.PeterAbel.IBMPCAssemblerLanguageandProgramming[M].Prentice—HALL,Inc.3.溫冬嬋,沈美明.IBMPC匯編語(yǔ)言與程序設(shè)計(jì)例題習(xí)題集[M]北京:清華大學(xué)出版社.4.王成端.匯編語(yǔ)言程序設(shè)計(jì)[M].北京:高等教育出版社.參考書目第二頁(yè),共三十九頁(yè)。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)用;3.理解匯編語(yǔ)言和匯編程序的基本概念。本章要求1.計(jì)算機(jī)中數(shù)制基本概念、數(shù)制之間相互轉(zhuǎn)換;2.計(jì)算機(jī)中的數(shù)據(jù)表示、數(shù)據(jù)的基本類型等;3.匯編語(yǔ)言基礎(chǔ)知識(shí)。本章主要內(nèi)容計(jì)劃學(xué)時(shí):2學(xué)時(shí)第三頁(yè),共三十九頁(yè)。1.1數(shù)據(jù)表示方法

一個(gè)任意的r進(jìn)制數(shù)N,都可寫成:

N=anan-1…a1a0.a-1a-2…a-m

=an·rn+an-1·rn-1+…+a0·r0+a-1·r-1+…+a-m·r-m

式中m、n為正整數(shù);ri是對(duì)應(yīng)位的位權(quán);r為對(duì)應(yīng)進(jìn)制的基數(shù)。1.1.1數(shù)與數(shù)制

計(jì)算機(jī)中數(shù)的表示

數(shù)碼、基與權(quán)

數(shù)碼:表示數(shù)的符號(hào)基:數(shù)碼的個(gè)數(shù)權(quán):每一位所具有的值

數(shù)制

數(shù)可以用不同的計(jì)數(shù)制表示;常用的有:十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制等。第四頁(yè),共三十九頁(yè)。

所謂基數(shù),就是指在該計(jì)數(shù)制中每個(gè)數(shù)位ai可能用到的數(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)第五頁(yè),共三十九頁(yè)。二進(jìn)制、十進(jìn)制及十六進(jìn)制對(duì)應(yīng)關(guān)系二進(jìn)制、八進(jìn)制對(duì)應(yīng)關(guān)系第六頁(yè),共三十九頁(yè)?!窘狻浚?/p>

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

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

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

N=an·rn+an-1·rn-1+…+a0·r0+a-1·r-1+…+a-m·r-m第七頁(yè),共三十九頁(yè)。●降冪法

轉(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并跳過(guò)此位;如此反復(fù),直到該數(shù)為0為止?!癯耍ㄐ?shù))除(整數(shù))法除法:把要轉(zhuǎn)換的十進(jìn)制的整數(shù)部分不斷除以2,并記下余數(shù),直到商為0為止。乘法:把要轉(zhuǎn)換的十進(jìn)制的小數(shù)部分不斷乘以2,并記下其整數(shù)部分,直到結(jié)果小數(shù)部分為0或達(dá)到精度要求為止。十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)第八頁(yè),共三十九頁(yè)?!窠祪绶ㄐ∮?17D的二進(jìn)制權(quán)為:

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

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ù)。第九頁(yè),共三十九頁(yè)?!癯ㄉ逃鄶?shù)計(jì)算過(guò)程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ù)。∴

N=117D=1110101B。第十頁(yè),共三十九頁(yè)?!纠浚喊袾=48956D轉(zhuǎn)換為十六進(jìn)制數(shù)?!窠祪绶ㄐ∮贜的十六進(jìn)制權(quán)值為:4096256161轉(zhuǎn)換結(jié)果:BF3C計(jì)算過(guò)程:

48956-11×4096=3900

3900-15×256=6060-3×16=1212-12×1=0∴N=48956D=BF3CH十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制第十一頁(yè),共三十九頁(yè)?!纠浚喊袾=48956D轉(zhuǎn)換為十六進(jìn)制數(shù)。●除法計(jì)算過(guò)程:余數(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)制第十二頁(yè),共三十九頁(yè)?!纠浚憾M(jìn)制轉(zhuǎn)換為八進(jìn)制

1100100.11010=001100100.11010014464=144.64Q000~0001~1010~2011~3100~4101~5110~6111~7八進(jìn)制轉(zhuǎn)換為二進(jìn)制144.64Q=144.64Q001100100110100=1100100.1101B二、八進(jìn)制對(duì)應(yīng)關(guān)系二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換

B→O(Q):整數(shù)從右向左,每3位一組(不足3位左補(bǔ)0),小數(shù)從左向右,每3位一組(不足3位右補(bǔ)0);

O(Q)→B:用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù)。第十三頁(yè),共三十九頁(yè)。轉(zhuǎn)換方法:(B→H)

由于十六進(jìn)制數(shù)是2的冪,即用4個(gè)二進(jìn)制數(shù)表示一個(gè)十六進(jìn)制數(shù)。具體方式,以小數(shù)點(diǎn)為中心,整數(shù)部分從小數(shù)點(diǎn)開(kāi)始往左,4個(gè)二進(jìn)制數(shù)為一組,不足位補(bǔ)零。小數(shù)部分從小數(shù)點(diǎn)開(kāi)始往右,4個(gè)二進(jìn)制數(shù)為一組,不足位補(bǔ)零?!纠?把轉(zhuǎn)換成十六進(jìn)制數(shù)。0011,0101,1011,1111.0100,1100

=35BF.4CH二進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)換0000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~FB、H對(duì)應(yīng)關(guān)系35BF4C第十四頁(yè),共三十九頁(yè)。轉(zhuǎn)換方法:(H→B)

由于十六進(jìn)制數(shù)是2的冪,所以一個(gè)十六進(jìn)制數(shù)用4個(gè)二進(jìn)制數(shù)表示。具體方式,以小數(shù)點(diǎn)為中心,整數(shù)部分從小數(shù)點(diǎn)開(kāi)始往左,1個(gè)十六進(jìn)制數(shù)符用4個(gè)二進(jìn)制數(shù)表示,零不能缺省。小數(shù)部分從小數(shù)點(diǎn)開(kāi)始往右,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

二進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)換第十五頁(yè),共三十九頁(yè)。●機(jī)器數(shù):

在機(jī)器中,把一個(gè)數(shù)連同其符號(hào)在內(nèi)數(shù)值化表示的數(shù),稱為機(jī)器數(shù)。

一般用最高有效位來(lái)表示數(shù)的符號(hào)(正負(fù)),正數(shù)用“0”表示,負(fù)數(shù)用“1”表示。

D0D7最高位機(jī)器字長(zhǎng)為8D0D15最高位機(jī)器字長(zhǎng)為161.1.2計(jì)算機(jī)中的數(shù)據(jù)表示●機(jī)器數(shù)可以用不同的碼制來(lái)表示,常用的碼制有原碼、反碼和補(bǔ)碼。

符號(hào)位第十六頁(yè),共三十九頁(yè)。原碼表示法:符號(hào)+絕對(duì)值【例】:設(shè)機(jī)器字長(zhǎng)為n,若n=8,給出+3,-3,+0,-0的原碼?!窘狻浚?/p>

[+3]原碼=0000,0011=03H[-3]原碼=1000,0011=83H[+0]原碼=0000,0000=0H[-0]原碼=1000,0000=80H

◆◆注意:在原碼表示中,零不唯一!數(shù)的表示范圍(整數(shù)):第十七頁(yè),共三十九頁(yè)。反碼表示法:正數(shù)的反碼同原碼,負(fù)數(shù)的反碼數(shù)值位與原碼相反,符號(hào)位為”1”?!纠浚涸O(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ù)):第十八頁(yè),共三十九頁(yè)。補(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:第十九頁(yè),共三十九頁(yè)。負(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第二十頁(yè),共三十九頁(yè)。例:機(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第二十一頁(yè),共三十九頁(yè)?!袂笱a(bǔ)運(yùn)算:對(duì)一個(gè)二進(jìn)制數(shù)按位求反、末位加一的運(yùn)算稱為求補(bǔ)運(yùn)算。補(bǔ)碼數(shù)具有的特征:[[X]補(bǔ)]補(bǔ)=[-X]補(bǔ)

補(bǔ)碼的加法和減法補(bǔ)碼的加法規(guī)則:補(bǔ)碼的減法規(guī)則:根據(jù)補(bǔ)碼的這一特性,可以得到補(bǔ)碼加法和減法的表示:第二十二頁(yè),共三十九頁(yè)。設(shè)機(jī)器字長(zhǎng)n=8

[25]補(bǔ)=00011001[32]補(bǔ)=00100000[-25]補(bǔ)=11100111[-32]補(bǔ)=11100000

25+32=57

00011001

+0010000000111001

25+(-32)=-7

00011001

+1110000011111001

-25-32=(-25)+(-32)=-57

11100111

+11100000

111000111丟棄補(bǔ)碼的加法和減法第二十三頁(yè),共三十九頁(yè)。進(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è),共三十九頁(yè)。

定義:十進(jìn)制數(shù)的二進(jìn)制編碼稱為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)制編碼來(lái)表示,十進(jìn)制數(shù)的0~9分別對(duì)應(yīng)于0000~1001。

BCD碼有壓縮BCD碼和非壓縮BCD碼二種形式:

壓縮BCD碼的每個(gè)字節(jié)存放兩位BCD碼;

非壓縮BCD碼的每個(gè)十進(jìn)制數(shù)字占用一個(gè)字節(jié)的低4位,其高4位的內(nèi)容不代表BCD的信息。BCD碼第二十五頁(yè),共三十九頁(yè)?!纠繉懗鍪M(jìn)制數(shù)31的壓縮BCD碼和非壓縮BCD碼。

【解】31的壓縮BCD碼為:0011000131的非壓縮BCD碼為:0000001100000001十進(jìn)制數(shù)字的8421BCD碼第二十六頁(yè),共三十九頁(yè)。標(biāo)準(zhǔn)的ASCII碼共128個(gè)字符,分為二類:非打印的和可打印的ASCII碼。非打印ASCII碼:這類編碼用于控制性代碼,共33個(gè)。如:BEL(響鈴,07H),

DEL(刪除,7FH),

CR

(回車,0DH),

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

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

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

空格(Space)的編碼20H

第二十七頁(yè),共三十九頁(yè)。1.1.3基本數(shù)據(jù)類型字節(jié):8位,高4位稱高半字節(jié),低4位稱低半字節(jié)字:2個(gè)字節(jié),低8位稱低字節(jié),高8位稱高字節(jié)雙字:2個(gè)字,低16位稱低字,高16位稱高字四字:4個(gè)字,8個(gè)字節(jié)十字節(jié):10個(gè)字節(jié)字符串:由字符構(gòu)成的一個(gè)線性數(shù)組第二十八頁(yè),共三十九頁(yè)。1.2匯編語(yǔ)言程序設(shè)計(jì)概述程序

=指令序列的集合1.2.1程序設(shè)計(jì)語(yǔ)言1.指令與程序

每種計(jì)算機(jī)都有自己固有的指令系統(tǒng),80X86系列的指令系統(tǒng)是向上兼容的。計(jì)算機(jī)中的指令是由操作碼字段和操作數(shù)字段兩部分組成。操作碼字段操作數(shù)字段計(jì)算機(jī)所要執(zhí)行的操作指出在指令執(zhí)行操作的過(guò)程中所需要的操作數(shù),即操作的對(duì)象第二十九頁(yè),共三十九頁(yè)。機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言面向過(guò)程面向?qū)ο蠖M(jìn)制編碼用助記符表示指令的操作碼和操作數(shù),用標(biāo)號(hào)或符號(hào)表示地址、常量和變量。面向機(jī)器的語(yǔ)言面向用計(jì)算機(jī)求解問(wèn)題的過(guò)程,不依賴具體機(jī)器,典型的高級(jí)語(yǔ)言有BASIC、C、Fortran語(yǔ)言等。面向求解問(wèn)題本身,典型的面向?qū)ο蟮恼Z(yǔ)言有C++、JAVA語(yǔ)言等。2.程序設(shè)計(jì)語(yǔ)言第三十頁(yè),共三十九頁(yè)。1.2.2匯編語(yǔ)言特點(diǎn)和使用場(chǎng)合1.匯編語(yǔ)言的特點(diǎn)

(1)與處理器密切相關(guān)。(2)程序效率高。(3)比編寫高級(jí)語(yǔ)言源程序煩瑣。(4)比調(diào)試高級(jí)語(yǔ)言程序困難。2.匯編語(yǔ)言的主要應(yīng)用場(chǎng)合(1)執(zhí)行時(shí)間較短,或占用較小存儲(chǔ)容量的場(chǎng)合。(2)程序與硬件密切相關(guān),程序直接控制硬件的場(chǎng)合。(3)需提高大型軟件性能的場(chǎng)合。(4)沒(méi)有合適的高級(jí)語(yǔ)言的場(chǎng)合。

第三十一頁(yè),共三十九頁(yè)。1.2.3流程圖名稱:起止框含義:算法的開(kāi)始和結(jié)束名稱:流程線含義:表示流程的方向

名稱:連接點(diǎn)含義:兩個(gè)具有同一標(biāo)記的“連結(jié)點(diǎn)”應(yīng)連接成一個(gè)點(diǎn)名稱:輸入輸出框

含義:輸入輸出操作名稱:判斷框含義:對(duì)框內(nèi)的條件進(jìn)行判斷

名稱:注釋框含義:對(duì)某項(xiàng)的解釋或說(shuō)明

名稱:處理框含義:對(duì)框內(nèi)的內(nèi)容進(jìn)行處理

用途:用來(lái)表示算法比較方便。

傳統(tǒng)的流程圖常用符號(hào)如下:第三十二頁(yè),共三十九頁(yè)。1.2.4匯編語(yǔ)言程序設(shè)計(jì)基本步驟

(1)問(wèn)題定義(2)建立數(shù)學(xué)模型(3)確定解決此數(shù)學(xué)模型的算法(4)畫出流程圖(5)編制程序(6)上機(jī)調(diào)試(7)試運(yùn)行【例】:數(shù)組或向量加減。已知兩個(gè)大小一樣的字?jǐn)?shù)組ARRAY和BUFS,其長(zhǎng)度都為100字節(jié),不考慮溢出問(wèn)題,試編程完成把兩數(shù)組中元素兩兩相加,結(jié)果保存到BUFS,即

bufs[i]=bufs[i]+array[i]。第三十三頁(yè),共三十九頁(yè)。程序流程框圖開(kāi)始定義數(shù)組變量結(jié)束取數(shù)組首地址設(shè)置計(jì)數(shù)器兩元素求和(CX)=0?NYARRAYDW50DUP(?)BUFSDW50DUP(?)LEASI,ARRAYLEADI,BUFSCX←50bufs[i]=bufs[i]+array[i]移動(dòng)指針,即SI、DI分別加2。第三十四頁(yè),共三十九頁(yè)。1.2.5匯編語(yǔ)言程序質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)

(1)程序的正確性和完整性;(2)程序的易讀性;(3)程序的執(zhí)行時(shí)間和效

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論