匯編第1章-概述.ppt_第1頁(yè)
匯編第1章-概述.ppt_第2頁(yè)
匯編第1章-概述.ppt_第3頁(yè)
匯編第1章-概述.ppt_第4頁(yè)
匯編第1章-概述.ppt_第5頁(yè)
已閱讀5頁(yè),還剩120頁(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)介

1、第一章,匯編語(yǔ)言概述,1.4 習(xí)題1,1.1 匯編語(yǔ)言簡(jiǎn)介,1.2 計(jì)算機(jī)中的數(shù)和編碼,1.3 微型計(jì)算機(jī)的工作過(guò)程,1.1.1 機(jī)器語(yǔ)言,1.1.2 匯編語(yǔ)言,1.1.3 匯編語(yǔ)言的組成和特征,1.1.4 編輯程序、匯編程序和連接程序,1.1 匯編語(yǔ)言簡(jiǎn)介,1.2 計(jì)算機(jī)中的數(shù)和編碼,1.2.1 計(jì)算機(jī)中的數(shù)制,1.2.2 符號(hào)數(shù)的表示,1.2.3 二進(jìn)制數(shù)的運(yùn)算,1.2.4 二進(jìn)制編碼,1.2.5 8086/8088支持的數(shù)據(jù)類型及其內(nèi)部表示,1.3 微型計(jì)算機(jī)的工作過(guò)程,1.3.1 指令與程序的執(zhí)行,1.3.2 程序執(zhí)行過(guò)程舉例,1.1 匯編語(yǔ)言簡(jiǎn)介,1.1.1 機(jī)器語(yǔ)言 機(jī)器語(yǔ)言:計(jì)算

2、機(jī)的指令系統(tǒng)及編程的語(yǔ)法規(guī)則。 指令:控制計(jì)算機(jī)完成某種操作的命令。,操作碼:指示計(jì)算機(jī)完成某種操作。 操作數(shù):給出參與操作的數(shù)據(jù)值,或者指出操作對(duì)象在什么地方。 下面的二進(jìn)制代碼序列就是一條8086/8088的機(jī)器指令:,指令系統(tǒng):構(gòu)成某種計(jì)算機(jī)全部指令的集合。,1.1.2 匯編語(yǔ)言 匯編指令:機(jī)器指令的符號(hào)表示法。 例如:機(jī)器指令1000100111011000表示把寄存器BX的內(nèi)容送到AX中。匯編指令則寫成mov ax,bx.這樣的寫法與人類語(yǔ)言接近,便于閱讀和記憶。 匯編語(yǔ)言:匯編指令、偽指令、宏指令及編程的語(yǔ)法規(guī)則。,如上所述:對(duì)比如下: 操作:寄存器BX的內(nèi)容送到AX中 機(jī)器指令:

3、1000100111011000 匯編指令:mov ax,bx 寄存器,簡(jiǎn)單地講是CPU中可以存儲(chǔ)數(shù)據(jù)的器件,一個(gè)CPU中有多個(gè)寄存器。AX是其中一個(gè)寄存器的代號(hào),BX是另一個(gè)寄存器的代號(hào)。,程序員用匯編語(yǔ)言寫出源程序,再用匯編編譯器將其編譯為機(jī)器碼,由計(jì)算機(jī)最終執(zhí)行。圖1-1描述了這個(gè)工作過(guò)程。,1.1.3 匯編語(yǔ)言的組成和特征 匯編語(yǔ)言發(fā)展至今,由以下3類指令組成。 (1)匯編指令:機(jī)器碼的助記符,有對(duì)應(yīng)的機(jī)器碼。 (2)偽指令:沒(méi)有對(duì)應(yīng)的機(jī)器碼,由編譯器執(zhí)行,計(jì)算機(jī)并不執(zhí)行。 (3)其他符號(hào):如:+、-、*、/等,由編譯器識(shí)別,沒(méi)有對(duì)應(yīng)的機(jī)器碼。,匯編語(yǔ)言的核心是匯編指令,它決定了匯編語(yǔ)

4、言的特征: (1)與機(jī)器語(yǔ)言相比,匯編語(yǔ)言易于理解和記憶; (2)編寫的源程序可讀性較強(qiáng)。 (3)匯編語(yǔ)言能直接控制計(jì)算機(jī)的內(nèi)存和外設(shè)。,1.1.4 編輯程序、匯編程序和連接程序 編輯程序:主要用于對(duì)匯編語(yǔ)言源程序的輸入、編輯和修改。如:QE.EXE軟件。 匯編程序:把匯編語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序的程序。如:MASM.EXE。,連接程序:把機(jī)器語(yǔ)言程序轉(zhuǎn)換為可執(zhí)行程序的程序。如:LINK.EXE。 匯編語(yǔ)言源程序:用匯編語(yǔ)言編寫的程序。它的擴(kuò)展名為:.ASM 機(jī)器語(yǔ)言程序:又稱目的程序。它是用機(jī)器語(yǔ)言編寫的程序。它的擴(kuò)展名為:.OBJ 可執(zhí)行程序;又稱可執(zhí)行文件。它的擴(kuò)展名為:.EXE,匯

5、編語(yǔ)言源程序、匯編程序、目的程序、連接程序、執(zhí)行文件的關(guān)系如圖1-2所示。,圖1-2 由匯編語(yǔ)言源程序到執(zhí)行文件的處理過(guò)程,匯編:將匯編語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序(即目的程序)的過(guò)程。 匯編程序:將匯編語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序的程序。在此,用的是宏匯編程序:MASM.EXE。,連接:將目的程序轉(zhuǎn)換成可執(zhí)行程序(即可執(zhí)行文件)的過(guò)程。 連接程序:將目的程序轉(zhuǎn)換成可執(zhí)行程序的程序。即:LINK.EXE。,1.2 計(jì)算機(jī)中的數(shù)和編碼,1.2.1 計(jì)算機(jī)中的數(shù)制 1.常用進(jìn)位計(jì)數(shù)制 1)十進(jìn)制 十進(jìn)制數(shù)人們最熟悉,計(jì)算機(jī)輸入輸出時(shí)均采用十進(jìn)制數(shù)。但機(jī)器實(shí)現(xiàn)起來(lái)困難。,2)二進(jìn)制 二進(jìn)制數(shù),每位只

6、有兩個(gè)狀態(tài)“0”或“1”,機(jī)器容易識(shí)別,因此在機(jī)器內(nèi)部均采用二進(jìn)制。但二進(jìn)制數(shù)書寫太長(zhǎng),難記憶;若用它表示指令代碼機(jī)器指令,機(jī)器易識(shí)別,但人們難于識(shí)別。,3)八進(jìn)制 因?yàn)?3=8,因而三位二進(jìn)制數(shù)可用一位八進(jìn)制數(shù)表示。 4)十六進(jìn)制 因?yàn)?4=16, 因而四位二進(jìn)制數(shù)可用一位十六進(jìn)制數(shù)表示。,注意:在計(jì)算機(jī)應(yīng)用系統(tǒng)中,二進(jìn)制主要用于機(jī)器內(nèi)部的數(shù)據(jù)處理,八進(jìn)制和十六進(jìn)制主要用于書寫程序,十進(jìn)制主要用于運(yùn)算最終結(jié)果的輸出。,2.數(shù)制轉(zhuǎn)換 1)非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù) 不同數(shù)制之間的轉(zhuǎn)換方法有若干種,把非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)采用按權(quán)展開相加法。具體步驟是:首先把非十進(jìn)制數(shù)寫成按權(quán)展開的多項(xiàng)式,然后

7、按十進(jìn)制數(shù)的計(jì)數(shù)規(guī)則求和。,2)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 對(duì)于既有整數(shù)部分又有小數(shù)部分的十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),首先要把整數(shù)部分和小數(shù)部分分開轉(zhuǎn)換,再把兩者的轉(zhuǎn)換結(jié)果相加。具體方法介紹如下。,(1)整數(shù)轉(zhuǎn)換 方法:連續(xù)除以2取余數(shù),直到商為0,并按照和運(yùn)算過(guò)程相反的順序把各個(gè)余數(shù)排列起來(lái),即為二進(jìn)制整數(shù)。,(2)小數(shù)轉(zhuǎn)換 方法:連續(xù)乘2取整數(shù),并按照和運(yùn)算過(guò)程相同的順序把各個(gè)整數(shù)排列起來(lái),即為二進(jìn)制小數(shù)。,3)二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)或十六進(jìn)制數(shù) 方法:以二進(jìn)制數(shù)的小數(shù)點(diǎn)為起點(diǎn),分別向左、向右,每三位(或四位)分一組。對(duì)于小數(shù)部分,最低位一組不足三位(或四位)時(shí),必須在有效位右邊補(bǔ),使其足位。然后

8、把每一組二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制或十六進(jìn)制數(shù),并保持原順序。,)八進(jìn)制數(shù)或十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù) 方法:只要把八進(jìn)制數(shù)(或十六進(jìn)制數(shù))的每一位數(shù)碼分別轉(zhuǎn)換成三位(或四位)二進(jìn)制數(shù),并保持原排序即可。整數(shù)最高位一組左邊的,及小數(shù)最低位一組右邊的,可以省略。,1.2.2 符號(hào)數(shù)的表示 1.機(jī)器數(shù)與真值 真值:用符號(hào)“+”或“-”表示的數(shù)。 機(jī)器數(shù):用符號(hào)“0”表示正數(shù),用符號(hào)“1”表示負(fù)數(shù),數(shù)值部分用二進(jìn)制表示的數(shù)。,機(jī)器數(shù)包括原碼、反碼和補(bǔ)碼表示。原碼主要用于表示機(jī)器數(shù)的真值,反碼和補(bǔ)碼主要用于機(jī)器數(shù)的運(yùn)算。 在微機(jī)中,帶符號(hào)數(shù)一律以補(bǔ)碼表示。,為了表示方便,常把8位二進(jìn)制數(shù)稱為字節(jié)(B),把16

9、位二進(jìn)制數(shù)稱為字(W),把32位二進(jìn)制數(shù)稱為雙字(DW)。對(duì)于機(jī)器數(shù)應(yīng)將其用字節(jié)、字或雙字表示,因此只有8位、16位或32位機(jī)器數(shù)的最高位才是符號(hào)位。,1)原碼 如上所述,數(shù)值部分用該數(shù)的絕對(duì)值,符號(hào)部分,用“0”表示正數(shù),用“1”表示負(fù)數(shù),這樣表示數(shù)的方法稱帶符號(hào)數(shù)的原碼表示法,所表示的數(shù)稱原碼。,如下例: y1= +127=+1111111B y1原碼=01111111B y2= -127= -1111111B y2原碼=11111111B,8位整數(shù)原碼表示的數(shù)值范圍為FFH7FH,即-127+127。16位整數(shù)原碼表示的數(shù)值范圍為FFFFH7FFFH,即-32767+32767。,原碼表

10、示簡(jiǎn)單易懂,而且與真值的轉(zhuǎn)換方便。但若是兩個(gè)異號(hào)數(shù)相加,或兩個(gè)同號(hào)數(shù)相減,就要做減法。為簡(jiǎn)化計(jì)算機(jī)的結(jié)構(gòu),常把減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,因而引入了反碼和補(bǔ)碼。,2)反碼 正數(shù)的反碼與原碼相同;負(fù)數(shù)的反碼為它的原碼的數(shù)值部分按位取反,而符號(hào)位不變,即仍為“1”。,如下例: y1=+127=+1111111B y1反碼=01111111B y2=-127=-1111111B y2反碼=10000000B,3)補(bǔ)碼 正數(shù)的補(bǔ)碼與原碼相同;負(fù)數(shù)的補(bǔ)碼為它的原碼的數(shù)值部分按位取反,最末位再加1,而符號(hào)位不變,即仍為“1”。,如下例: y1=+127=+1111111B y1補(bǔ)碼=01111111B y2=

11、-127=-1111111B y2補(bǔ)碼=10000001B,8位補(bǔ)碼數(shù)表示的數(shù)值范圍為: 80H7FH, 即-128+127。 16位補(bǔ)碼表示的數(shù)值范圍為: 8000H7FFFH, 即-32768+32767。,2.原碼、反碼、補(bǔ)碼和真值的相互轉(zhuǎn)換關(guān)系 前面我們已經(jīng)討論了符號(hào)數(shù)的真值表示和在機(jī)器中的表示,下面我們總結(jié)一下機(jī)器數(shù)和真值的相互轉(zhuǎn)換關(guān)系。,正數(shù)的原碼、反碼、補(bǔ)碼相同,即正號(hào)“0”加上絕對(duì)值的數(shù)值位表示。 負(fù)數(shù)的原碼、反碼、補(bǔ)碼的相互轉(zhuǎn)換關(guān)系,如圖1-3所示。,圖1-3 負(fù)數(shù)的機(jī)器碼的相互轉(zhuǎn)換關(guān)系,下面我們舉例說(shuō)明符號(hào)數(shù)的機(jī)器表示和真值的相互轉(zhuǎn)換關(guān)系。以負(fù)數(shù)情況為例進(jìn)行分析。 1)已知

12、原碼,求補(bǔ)碼 【例1-1】 已知某數(shù)X的原碼為10110100B,試求X的補(bǔ)碼。,【解】如圖1-4 求X的補(bǔ)碼.由X原 =10110100B,X為負(fù)數(shù)。求其補(bǔ)碼表示時(shí),符號(hào)位不變,數(shù)值部分按位取反,再在末位加1。,圖1-4 求X的補(bǔ)碼,2)已知補(bǔ)碼,求原碼(如圖1-5 ) 【例1-2】 已知某數(shù)X的補(bǔ)碼為11101110B,試求其原碼。,【解】由X補(bǔ)=11101110B,知X為負(fù)數(shù)。求其原碼表示時(shí),符號(hào)位不變數(shù)值部分按位求反后,再在末位加1。,圖1-5 已知補(bǔ)碼,求原碼,X原碼=10010010B,3)求補(bǔ):已知X補(bǔ),求-X補(bǔ)的過(guò)程稱為求補(bǔ)。所謂求補(bǔ),就是將X補(bǔ)的所有位(包括符號(hào)位)一起逐位取

13、反,然后在末位加1,即可得到-X的補(bǔ)碼,亦即-X補(bǔ)。不管X是正數(shù)還是負(fù)數(shù),都應(yīng)按此方法操作。,【例1-3】試求+97、-97的補(bǔ)碼(如圖1-6)。 【解】+97=1100001,于是+97補(bǔ)=01100001B,求-97補(bǔ)的方法是:,圖1-6 求補(bǔ), +97補(bǔ)=01100001B, -97補(bǔ)=10011111B 4)已知補(bǔ)碼,求對(duì)應(yīng)的十進(jìn)制數(shù)。 【例1-4】 已知某數(shù)X的補(bǔ)碼為10101011B,試求其對(duì)應(yīng)的十進(jìn)制數(shù)。,【解】由X補(bǔ)=10101011B,知X為負(fù)數(shù),故符號(hào)位不變,數(shù)值部分按“求反加1”法得到X原碼: X原=11010101B, X= -1010101B, X=-85,1.2.3

14、 二進(jìn)制數(shù)的運(yùn)算 1.二進(jìn)制數(shù)的加減運(yùn)算 計(jì)算機(jī)把機(jī)器數(shù)均當(dāng)作無(wú)符號(hào)數(shù)進(jìn)行運(yùn)算,即符號(hào)位也參與運(yùn)算。運(yùn)算的結(jié)果要根據(jù)運(yùn)算結(jié)果的符號(hào),運(yùn)算有無(wú)進(jìn)位(借位)和溢出等來(lái)判別。計(jì)算機(jī)中設(shè)置有這些標(biāo)志位,標(biāo)志位的值由運(yùn)算結(jié)果自動(dòng)設(shè)定。,1)無(wú)符號(hào)數(shù)的運(yùn)算 無(wú)符號(hào)數(shù)實(shí)際上是指參加運(yùn)算的數(shù)均為正數(shù),且全部數(shù)位都用于表示數(shù)值。n位無(wú)符號(hào)二進(jìn)制數(shù)能表示的數(shù)值范圍為0 (2n -1)。,兩個(gè)無(wú)符號(hào)數(shù)相加,由于兩個(gè)加數(shù)均為正數(shù),因此其和也是正數(shù)。當(dāng)和超過(guò)其位數(shù)所允許表示的數(shù)值范圍時(shí),就向更高位進(jìn)位。如圖1-7:,127 + 150 = 7FH + 96H,圖1-7 兩個(gè)無(wú)符號(hào)數(shù)相加,兩個(gè)無(wú)符號(hào)數(shù)相減 ,被減數(shù)大于或

15、等于減數(shù),無(wú)借位,結(jié)果為正;被減數(shù)小于減數(shù),有借位,結(jié)果為負(fù)。 如下例,128-10=80H-0AH,(a)被減數(shù)大于減數(shù),結(jié)果為正,反過(guò)來(lái)相減,即10128,運(yùn)算過(guò)程如下:,(b)被減數(shù)小于減數(shù),結(jié)果為負(fù),圖1-8 兩個(gè)無(wú)符號(hào)數(shù)相減,由此可見,對(duì)無(wú)符號(hào)數(shù)進(jìn)行減法運(yùn)算,其結(jié)果的符號(hào)用借位標(biāo)志位來(lái)判別:若CF=0,則無(wú)借位,結(jié)果一定為正;若CF=1,則有借位,結(jié)果一定為負(fù)。,2)符號(hào)數(shù)的加法運(yùn)算和溢出判斷 (1)補(bǔ)碼的加減法運(yùn)算 由于符號(hào)數(shù)在引入補(bǔ)碼表示法以后,補(bǔ)碼的減法運(yùn)算可以轉(zhuǎn)換為加法運(yùn)算來(lái)進(jìn)行。其運(yùn)算法則為: xy補(bǔ)=x補(bǔ)+y補(bǔ) 故下面只討論補(bǔ)碼的加法運(yùn)算規(guī)則。,補(bǔ)碼加法運(yùn)算規(guī)則: 參加運(yùn)

16、算的數(shù)均為補(bǔ)碼; 符號(hào)位和數(shù)值位一起參加運(yùn)算,符號(hào)位向前的進(jìn)位自然丟掉,若不發(fā)生溢出,留下的結(jié)果一定是正確的; 運(yùn)算結(jié)果為補(bǔ)碼; 若運(yùn)算結(jié)果為負(fù)數(shù)的補(bǔ)碼,若未發(fā)生溢出,應(yīng)轉(zhuǎn)換為原碼,才能知道結(jié)果的真值。,【例1-5】用8位補(bǔ)碼完成下列計(jì)算。 (1)63-127 (2)-67-15 【解】(如圖1-9),(A)正數(shù)加負(fù)數(shù),圖1-9 例1-5圖,(B)負(fù)數(shù)加負(fù)數(shù),(2)補(bǔ)碼加法運(yùn)算的溢出判斷 兩個(gè)補(bǔ)碼加數(shù)相加時(shí),在什么情況下才有可能發(fā)生溢出呢?很顯然,只有當(dāng)它們都是正數(shù)或當(dāng)它們都是負(fù)數(shù)補(bǔ)碼相加時(shí)才有可能發(fā)生溢出。 【例1-6】?jī)蓚€(gè)帶符號(hào)數(shù)(01000001)B(5)和(01000011)B(+67

17、)相 加(如圖1-10) :,圖1-10 例1-6圖,上例中是兩個(gè)正數(shù)相加,但相加結(jié)果卻是一個(gè)負(fù)數(shù),顯然這個(gè)結(jié)果是錯(cuò)誤的,出現(xiàn)這種情況的原因就在于這兩個(gè)加數(shù)相加結(jié)果超過(guò)了8位二進(jìn)制帶符號(hào)數(shù)補(bǔ)碼所能表示的范圍: (-128+127)。,【例1-7】現(xiàn)在,再來(lái)看兩個(gè)負(fù)數(shù)(10001000)B(-120)和(11101110)B(-18)的相加情況(如圖1-11) 。,圖1-11 例1-7圖,由于規(guī)定用8位二進(jìn)制數(shù)來(lái)表示帶符號(hào)數(shù),故忽略作為進(jìn)位位的第九位。按8位二進(jìn)制數(shù)來(lái)解釋這兩個(gè)符號(hào)數(shù)的相加,其結(jié)果為一個(gè)正數(shù),很明顯,結(jié)果是錯(cuò)誤的。錯(cuò)誤的原因如上所述。,以上兩種情況叫做補(bǔ)碼運(yùn)算的溢出。當(dāng)兩個(gè)同符號(hào)

18、的數(shù)據(jù)相加時(shí),如果相加的結(jié)果超過(guò)了微處理器所能表示的數(shù)值范圍,就將發(fā)生溢出,其結(jié)果就是錯(cuò)誤的。,因此,在微處理機(jī)中設(shè)有專門的電路用以判斷運(yùn)算結(jié)果是否產(chǎn)生溢出,并以某種標(biāo)志告訴人們這次運(yùn)算的結(jié)果是否存在溢出。只要溢出沒(méi)有發(fā)生,運(yùn)算的結(jié)果總是正確的。這個(gè)標(biāo)志在8086微處理機(jī)中是用OF來(lái)標(biāo)志的。若運(yùn)算結(jié)果發(fā)生溢出,則置OF為1;否則OF為0。,在機(jī)器中如何設(shè)置OF標(biāo)志位呢? 設(shè)符號(hào)位向進(jìn)位位的進(jìn)位為CY,數(shù)值部分向符號(hào)位的進(jìn)位為CS,則有無(wú)溢出的判別式如下: OF=CYCS 式中,OF=1表示有溢出;OF=0表示無(wú)溢出,【例1-8】再來(lái)看105+50、10550和505,其運(yùn)算結(jié)果有無(wú)溢出(如圖1

19、-12) :,(a)OF=01=1,發(fā)生正溢出,結(jié)果錯(cuò)誤。,(b) OF=10=1,發(fā)生負(fù)溢出,結(jié)果錯(cuò)誤。,(c) CY=1,CS=1 OF=11=0, 無(wú)溢出,結(jié)果正確。 圖1-12 例1-8圖,2.二進(jìn)制數(shù)的邏輯運(yùn)算1)邏輯非 亦稱“求反”。對(duì)二進(jìn)制數(shù)進(jìn)行邏輯非運(yùn)算,就是按位求它的反。2)邏輯與 對(duì)兩個(gè)二進(jìn)制數(shù)進(jìn)行邏輯與,就是按位求它們的邏輯積。又稱邏輯“乘”,常用記號(hào)“”或“.”來(lái)表示。,3)邏輯加對(duì)兩個(gè)二進(jìn)制數(shù)進(jìn)行邏輯加,就是按位求它們的“或”,所以邏輯加又稱“邏輯或”,常用記號(hào)“”或“”來(lái)表示。,注意:按位加與普通整數(shù)加法的區(qū)別是它僅按位相加,不產(chǎn)生進(jìn)位。,1.2.4 二進(jìn)制編碼 在

20、計(jì)算機(jī)中常用的字符編碼有:BCD碼、ASCII碼、格雷碼、奇偶校驗(yàn)碼等,這些編碼在機(jī)器內(nèi)部都是用二進(jìn)制表示的,所以統(tǒng)稱二進(jìn)制編碼。,1.BCD碼 所謂BCD碼就是由四位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),十進(jìn)制數(shù)只有10個(gè)基數(shù)符號(hào),而四位二進(jìn)制數(shù)有16種取值組合,這樣就出現(xiàn)了多種編碼方案。下面僅介紹8421碼、余3碼和格雷碼。這三種編碼與十進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系如表1-1所示。,BCD碼又分為:壓縮和非壓縮兩種存儲(chǔ)形式。 壓縮的BCD碼是用半個(gè)字節(jié)存放一位十進(jìn)制數(shù),即一個(gè)字節(jié)存放兩位十進(jìn)制數(shù); 而非壓縮的BCD碼則以一個(gè)字節(jié)存放一位十進(jìn)制數(shù)。 BCD碼在計(jì)算機(jī)中是常用的一種編碼。,1) 8421碼 8421碼

21、是一種最簡(jiǎn)單的二進(jìn)制自然編碼,它以4位二進(jìn)制數(shù)的前10個(gè)代碼分別對(duì)應(yīng)十進(jìn)制數(shù)的10個(gè)數(shù)碼,10101111為無(wú)效編碼。這種編碼按權(quán)求和,和就是對(duì)應(yīng)的十進(jìn)制數(shù)。,如十進(jìn)制數(shù)72的壓縮BCD碼用8421碼可表示為: 01110010; 十進(jìn)制數(shù)54,對(duì)應(yīng)的壓縮BCD碼用8421碼可表示為: 01010100。,表 1-1 BCD碼與十進(jìn)制數(shù)對(duì)應(yīng)關(guān)系,2)余3碼 余3 碼是無(wú)權(quán)碼,它具有良好的代碼校驗(yàn)性。這種編碼轉(zhuǎn)換成十進(jìn)制數(shù)后,每個(gè)代碼的值比相應(yīng)的十進(jìn)制數(shù)多3。 例如,表1-1中的十進(jìn)制數(shù)4,它對(duì)應(yīng)的二進(jìn)制代碼是:0111=7; 十進(jìn)制數(shù)9對(duì)應(yīng)的二進(jìn)制代碼是:1100=12,3)格雷碼 格雷碼也是

22、一種無(wú)權(quán)的BCD編碼形式,其特點(diǎn)是相鄰的兩位代碼,僅有一個(gè)碼元變化。這種編碼抗干擾能力強(qiáng),常用于計(jì)算機(jī)控制機(jī)床的角編碼器、軸位編碼等。,2. ASCII碼 它是計(jì)算機(jī)中的常用字符編碼。 計(jì)算機(jī)中的常用字符包括: 數(shù)字符號(hào):0、1、2、9, 共10個(gè) 英文字符: 大寫字母:A、B、Z; 小寫字母:a、b、z; 共52個(gè)。,常用符號(hào):如標(biāo)點(diǎn)符號(hào),如$等,這類通用符號(hào)共32個(gè); 計(jì)算機(jī)控制符號(hào):如回車符CR、換行符LF、空格符SP、響鈴符等,這類專用控制符號(hào)共34個(gè)。 計(jì)算機(jī)中的常用符號(hào)總共128個(gè)。,對(duì)各個(gè)字母和符號(hào)編制的代碼叫字符代碼。字符代碼的種類繁多,目前在計(jì)算機(jī)和數(shù)字通信系統(tǒng)中被廣泛采用的

23、是ASCII碼(American Standard Code for Information Interchange,美國(guó)信息交換標(biāo)準(zhǔn)代碼)其編碼表如附錄A所示。,目前,ASCII碼有7位和8位兩種字符編碼形式。常用的是7位ASCII碼,它包括26個(gè)大寫和小寫英文字母、10個(gè)數(shù)字、以及一些專用字符。7位編碼的ASCII碼,實(shí)際也采用8位二進(jìn)制(1個(gè)字節(jié)),但最高位置0或用作校驗(yàn),故最多可表示128個(gè)字符(即27=128)。, 0、 1、 、9的ASCII碼值: 30H、31H、39H; A、 B、 、Z的ASCII碼值: 41H、42H、5AH; a、 b、 、z的ASCII碼值: 61H、6

24、2H、7AH;,其它一些專用符號(hào)的ASCII碼值: 美元符:$:24H; 以下字符屬于控制字符: 換行符LF:0AHH; 回車符CR:0DH; 空格符SP:20H; 響鈴符:07H。,3.奇偶校驗(yàn)碼 奇偶校驗(yàn)碼是一種可以檢測(cè)一位錯(cuò)誤的代碼。它由信息位和校驗(yàn)位兩部分組成。信息位可以是任何一種二進(jìn)制代碼,它代表需要傳輸?shù)脑夹畔?,占若干位?校驗(yàn)位僅有一位,它可以放在信息位的前面,也可以放在信息位的后面。,其編碼方式有兩種: 使每一個(gè)碼組中信息位和校驗(yàn)位的”1”的個(gè)數(shù)之和為奇數(shù),稱這種編碼方式為奇校驗(yàn)。 使每一個(gè)碼組中信息位和校驗(yàn)位的“1”的個(gè)數(shù)之和為偶數(shù),稱這種編碼方式為偶校驗(yàn)。,表1-2給出了

25、8421BCD奇偶校驗(yàn)碼 表1-2 帶奇偶校驗(yàn)的8421BCD碼,奇偶校驗(yàn)碼主要用在通信中,發(fā)送方和接收方按事先的約定,即奇校驗(yàn)還是偶校驗(yàn)進(jìn)行通信。 接收方對(duì)接收到的奇偶校驗(yàn)碼要進(jìn)行檢測(cè)??疵總€(gè)碼組中“1”的個(gè)數(shù)是否與約定相符。若不相符,則為錯(cuò)碼。,奇偶校驗(yàn)只能檢測(cè)一位錯(cuò)碼,但不能測(cè)定哪一位出錯(cuò),也不能自行糾正錯(cuò)誤。若代碼中同時(shí)出現(xiàn)多位錯(cuò)誤,則奇偶校驗(yàn)碼無(wú)法檢測(cè)。但是,由于多位同時(shí)出錯(cuò)的概率要比一位出錯(cuò)的概率小得多,并且奇偶校驗(yàn)碼容易實(shí)現(xiàn),因而被廣泛采用。,1.2.5 8086支持的數(shù)據(jù)類型及其內(nèi)部表示 8086/8088機(jī)器指令中可以直接處理的數(shù)據(jù)類型只有三種:字節(jié)型、字型和雙字型。8位二進(jìn)

26、制數(shù)組成一個(gè)字節(jié)型數(shù)據(jù)(B),16位二進(jìn)制數(shù)即兩個(gè)字節(jié),組成一個(gè)字型數(shù)據(jù)(W),32位二進(jìn)制數(shù)即兩個(gè)字,組成一個(gè)雙字型數(shù)據(jù)(DW)。,表1-3各種數(shù)據(jù)類型的有效范圍,在8086/8088匯編語(yǔ)言中,數(shù)據(jù)的書寫方法比較豐富,不同的書寫形式在計(jì)算機(jī)內(nèi)部可能有相同的存儲(chǔ)結(jié)果,而存儲(chǔ)器中的同一個(gè)數(shù)據(jù)也可能因?yàn)槭褂玫姆椒ú煌胁煌耐獠勘憩F(xiàn)形式。所以內(nèi)部存儲(chǔ)形式相同的數(shù)據(jù)之間不存在類型轉(zhuǎn)換問(wèn)題,而是一個(gè)使用方法的問(wèn)題。,【例1-8】把下面幾種形式書寫的數(shù)據(jù)轉(zhuǎn)換成字節(jié)型內(nèi)部存儲(chǔ)形式。 0E3H, 227, 29, 11101B 【解】經(jīng)轉(zhuǎn)換,內(nèi)部形式完全相同,都是11100011B,【例1-9】設(shè)存儲(chǔ)器

27、中有一個(gè)字節(jié)型數(shù)據(jù)01100010B,試說(shuō)明該數(shù)據(jù)在不同的使用環(huán)境下幾種可能的含義。 【解】作為字符的ASCII值用于向屏幕輸出,該數(shù)表示字符b; 作為無(wú)符號(hào)數(shù),該數(shù)表示98; 作為帶符號(hào)數(shù),該數(shù)表示+98。,1.3 微型計(jì)算機(jī)的工作過(guò)程 微型計(jì)算機(jī)的工作過(guò)程本質(zhì)上就是執(zhí)行程序的過(guò)程。而程序是由若干條指令組成的,這些指令我們稱指令序列。所以,微機(jī)的工作過(guò)程就是執(zhí)行指令序列的過(guò)程。,指令是規(guī)定計(jì)算機(jī)執(zhí)行特定操作的命令。程序則是為解決某一問(wèn)題而編寫在一起的指令序列。目前微型計(jì)算機(jī)系統(tǒng)中使用著三種形式的程序:機(jī)器語(yǔ)言程序、匯編語(yǔ)言程序和高級(jí)語(yǔ)言程序。無(wú)論哪種語(yǔ)言程序,最終都必須生成機(jī)器語(yǔ)言程序 二進(jìn)

28、制代碼的指令序列,計(jì)算機(jī)才能夠識(shí)別和執(zhí)行。,1.3.1 指令與程序的執(zhí)行 微型計(jì)算機(jī)每執(zhí)行一條指令都是分成三個(gè)階段進(jìn)行:取指令、分析指令和執(zhí)行指令。 取指令階段的任務(wù):根據(jù)程序計(jì)數(shù)器PC中的值從存儲(chǔ)器讀出現(xiàn)行指令,送到指令寄存器IR,然后PC自動(dòng)加1,指向下一條指令的地址。,分析指令階段的任務(wù):將IR中的指令操作碼譯碼,分析其指令性質(zhì)。如指令要求操作數(shù),則尋找操作數(shù)地址。 執(zhí)行指令階段的任務(wù):取出操作數(shù),執(zhí)行指令規(guī)定的操作,按照指令要求還可能寫入操作結(jié)果。,微型機(jī)程序的執(zhí)行過(guò)程,實(shí)際上就是周而復(fù)始地完成這三個(gè)階段操作的過(guò)程,直至遇到停機(jī)指令才結(jié)束整個(gè)機(jī)器的運(yùn)行,如圖1-13所示。,圖1-13

29、程序執(zhí)行過(guò)程,由于程序的指令和數(shù)據(jù)都存放于內(nèi)存中,所以在執(zhí)行程序時(shí),CPU必須經(jīng)常和內(nèi)存打交道。CPU和內(nèi)存的聯(lián)系是通過(guò)存儲(chǔ)器地址寄存器MAR和存儲(chǔ)器數(shù)據(jù)寄存器MDR以及若干讀/寫控制信號(hào)實(shí)現(xiàn)的,如圖1-14所示。MAR存放著訪問(wèn)的指令或數(shù)據(jù)的地址,MDR存放著從內(nèi)存中讀出的指令操作碼或讀出/寫入的數(shù)據(jù)。,圖1-14 假想模型機(jī)與程序執(zhí)行實(shí)例,1.3.2 程序執(zhí)行過(guò)程舉例 本節(jié)以一個(gè)簡(jiǎn)單程序在圖1-14所示假想模型機(jī)中的執(zhí)行過(guò)程為例,看看計(jì)算機(jī)是怎樣工作的。該程序?qū)崿F(xiàn)的功能是:計(jì)算5CH+2EH,判斷結(jié)果是否有溢出,如無(wú)溢出,將結(jié)果存放到內(nèi)存0200H單元,供后面程序使用;如有溢出,則停機(jī)。匯

30、編語(yǔ)言程序清單如下:,ORG 1000H ; 對(duì)應(yīng)機(jī)器碼 1:MOV A ,5CH ; B0H 5CH 2:ADD A ,2EH ; 04H 2EH,3:JO 100AH ; 70H 0AH 10H 4:MOV (0200H) ,A ; A2H 00H 02H 5: HLT ; F4H,該程序由5條指令組成。每條指令對(duì)應(yīng)的第一個(gè)機(jī)器碼為指令操作碼。案例中,指令助記符及操作碼值是任意假定的,因計(jì)算機(jī)而異,緊跟其后的機(jī)器碼為操作數(shù)。,該段程序在執(zhí)行前,首先將該程序的機(jī)器碼送到假想模型機(jī)的內(nèi)存儲(chǔ)器,從1000H開始的內(nèi)存地址單元中,如圖1-14所示。 因此在運(yùn)行本程序前PC值應(yīng)為1000H。啟動(dòng)程序運(yùn)行后,步驟如下:,1PC內(nèi)容1000H送到地址寄存器MAR; 2PC值自動(dòng)加1,為取下一個(gè)字節(jié)機(jī)器碼作準(zhǔn)備; 3MAR中內(nèi)容經(jīng)地址譯碼器譯碼,找到內(nèi)存1000H單元;,4CPU發(fā)讀命令。 5將1000H單元內(nèi)容B0H讀出,送至數(shù)據(jù)寄存器MDR。 6由于B0H是操作碼,故將它從MDR中經(jīng)內(nèi)部總線送至指令寄存器IR。,7經(jīng)指令譯碼器ID譯碼,由操作控制器OC發(fā)出相應(yīng)于操作碼的控制信號(hào)。下面將要取操作數(shù)5CH,送至累加器A。 8將PC內(nèi)容1001H送MAR。 9PC值自動(dòng)加1。,10MAR中內(nèi)容經(jīng)地址譯碼

溫馨提示

  • 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)論