匯編語言基礎(chǔ)知識(shí)_第1頁
匯編語言基礎(chǔ)知識(shí)_第2頁
匯編語言基礎(chǔ)知識(shí)_第3頁
匯編語言基礎(chǔ)知識(shí)_第4頁
匯編語言基礎(chǔ)知識(shí)_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章匯編語言根底知識(shí)1.1匯編語言概述1.2進(jìn)位計(jì)數(shù)制及其轉(zhuǎn)換1.3計(jì)算機(jī)中數(shù)與字符的表示方法習(xí)題11.1匯編語言概述1.1.1匯編語言的根本概念匯編語言是機(jī)器語言的符號(hào)表示形式。在匯編語言出現(xiàn)之前,計(jì)算機(jī)使用機(jī)器語言來控制計(jì)算機(jī)的各種動(dòng)作。所謂機(jī)器語言,就是用“0〞和“1〞所組成的一串二進(jìn)制數(shù)所表示的命令或數(shù)據(jù),機(jī)器的硬件可以直接識(shí)別和執(zhí)行,不需要進(jìn)行翻譯。機(jī)器語言的特點(diǎn)是命令代碼效率高,但不容易記憶,不利于推廣和使用;程序員借助機(jī)器語言編程時(shí),要用數(shù)值表示指令和地址,不但費(fèi)時(shí)費(fèi)力,而且容易出錯(cuò)。匯編語言將機(jī)器語言指令和地址符號(hào)化,程序員只需要記住符號(hào)名并用其編程,匯編器負(fù)責(zé)把匯編程序翻譯成機(jī)器指令和正確的地址數(shù)值。大多數(shù)程序應(yīng)該也可以用高級(jí)語言編寫,但是在某些情況下匯編語言也是必不可少的。匯編語言可以訪問計(jì)算機(jī)的所有指令,可以利用計(jì)算機(jī)的所有特性,而高級(jí)語言就沒有這樣的能力,高級(jí)語言能做的事情匯編語言都能做,而匯編語言能做的高級(jí)語言不一定能做到。例如,如果計(jì)算機(jī)有一個(gè)溢出位,匯編程序可以測(cè)試它,而一個(gè)JAVA程序就不能直接測(cè)試溢出位。匯編語言可以直接訪問存放器,而高級(jí)語言那么不一定能訪問。1.1.2匯編語言的特點(diǎn)匯編語言相對(duì)機(jī)器語言而言好記好用,但遠(yuǎn)不如高級(jí)語言方便、實(shí)用,而且編寫同樣的程序,使用匯編語言比使用高級(jí)語言花費(fèi)的時(shí)間更多,調(diào)試和維護(hù)更困難。既然如此,為什么還要使用匯編語言呢?主要有兩個(gè)原因:性能和對(duì)計(jì)算機(jī)的完全控制。一般而言,匯編語言具有如下特點(diǎn):1)執(zhí)行速度快一個(gè)匯編語言程序,要比高級(jí)語言程序執(zhí)行得更快。程序的執(zhí)行速度對(duì)于某些應(yīng)用來說是至關(guān)重要的。對(duì)于這些應(yīng)用,單純使用高級(jí)語言往往達(dá)不到要求,單純使用匯編語言編寫程序也并不是最好的方案,許多成功的大型應(yīng)用程序往往使用的是混合編程。首先使用高級(jí)語言編寫整個(gè)程序,然后測(cè)試程序的執(zhí)行時(shí)間,再使用匯編語言重寫其中最費(fèi)時(shí)間的局部。這樣做的依據(jù)是在實(shí)際使用中,通常程序的大局部執(zhí)行時(shí)間都花費(fèi)在一小局部代碼上。2)程序短小一個(gè)匯編語言程序,要比高級(jí)語言程序更小。在某些情況下,設(shè)備中的嵌入式處理器往往只有很少的內(nèi)存,使用匯編語言可能是惟一的方法。如智能卡中有CPU,但是智能卡中很難有1?MB以上的內(nèi)存,也不可能有帶分頁的硬盤,但智能卡又必須執(zhí)行復(fù)雜的加密解密計(jì)算。個(gè)人數(shù)字助理〔PDA〕和其他使用電池作為能源的無線電子設(shè)備,為了節(jié)省電池的電力,往往也只有很少的內(nèi)存,它們也需要使用短小精悍而且具有高效率的機(jī)器代碼。3)可以直接控制硬件某些應(yīng)用程序要求能夠完全控制計(jì)算機(jī)硬件,這也必須使用匯編語言。如操作系統(tǒng)中的低級(jí)中斷和陷阱處理程序,以及許多嵌入式實(shí)時(shí)系統(tǒng)中的設(shè)備控制程序都屬于這一類應(yīng)用。4)可以方便地編譯編譯器可以產(chǎn)生供編程者使用的匯編程序或者自己執(zhí)行匯編過程。因此,為了理解編譯器的工作原理,必須首先理解匯編語言。5)輔助計(jì)算機(jī)工作者掌握計(jì)算機(jī)體系結(jié)構(gòu)研究匯編語言可以使人們清楚實(shí)際計(jì)算機(jī)結(jié)構(gòu)。特別是對(duì)于學(xué)習(xí)計(jì)算機(jī)體系結(jié)構(gòu)的學(xué)生,編寫匯編語言是在結(jié)構(gòu)層理解計(jì)算機(jī)的惟一途徑。計(jì)算機(jī)的程序設(shè)計(jì)語言1.機(jī)器語言低級(jí)語言2.匯編語言程序設(shè)計(jì)語言3.高級(jí)語言C/C++、JAVA、 DELPHI……1.1機(jī)器語言機(jī)器語言是機(jī)器指令的集合。機(jī)器指令展開來講就是一臺(tái)機(jī)器可以正確執(zhí)行的命令。1.1機(jī)器語言指令:01010000(PUSHAX)電平脈沖:

1.1機(jī)器語言程序員們將0、1數(shù)字編程的程序代碼打在紙帶或卡片上,1打孔,0不打孔,再將程序通過紙帶機(jī)或卡片機(jī)輸入計(jì)算機(jī),進(jìn)行運(yùn)算。例如應(yīng)用8086CPU完成運(yùn)算:S=768+12288–12801.1機(jī)器語言S=768+12288-1280機(jī)器碼:

假設(shè)將程序錯(cuò)寫成以下這樣,請(qǐng)找處錯(cuò)誤:

1.1機(jī)器語言在顯示器上輸出“welcometomasm〞。機(jī)器碼看到這樣的程序,你會(huì)有什么感想?如果程序里有一個(gè)“1〞被誤寫為“0〞,又如何去查找呢?1.2匯編語言的產(chǎn)生匯編語言的主體是匯編指令。匯編指令和機(jī)器指令的差異在于指令的表示方法上。匯編指令是機(jī)器指令便于記憶的書寫格式。匯編指令是機(jī)器指令的助記符。1.2匯編語言的產(chǎn)生機(jī)器指令:操作:存放器BX的內(nèi)容送到AX中匯編指令:MOVAX,BX這樣的寫法與人類語言接近,便于閱讀和記憶。存放器存放器:簡(jiǎn)單的講是CPU中可以存儲(chǔ)數(shù)據(jù)的器件,一個(gè)CPU中有多個(gè)存放器。AX是其中一個(gè)存放器的代號(hào),BX是另一個(gè)存放器的代號(hào)。更詳細(xì)的內(nèi)容我們?cè)谝院蟮恼n程中將會(huì)講到。1.2匯編語言的產(chǎn)生計(jì)算機(jī)能讀懂的只有機(jī)器指令,那么如何讓計(jì)算機(jī)執(zhí)行程序員用匯編指令編寫的程序呢?用匯編語言編寫程序的工作過程1.3匯編語言的組成匯編語言由以下3類組成:1、匯編指令〔機(jī)器碼的助記符〕2、偽指令〔由編譯器執(zhí)行〕3、其它符號(hào)〔由編譯器識(shí)別〕匯編語言的核心是匯編指令,它決定了匯編語言的特性。3.高級(jí)語言機(jī)器語言和匯編語言以外的程序設(shè)計(jì)語言統(tǒng)稱高級(jí)語言。其特點(diǎn)是更加接近自然語言和慣用的數(shù)學(xué)表達(dá)形式,與計(jì)算機(jī)硬件結(jié)構(gòu)無關(guān),因而便于使用,便于交流和推廣。總之,高級(jí)語言編程效率高,但運(yùn)行效率低。高級(jí)語言可分成編譯型和解釋型高級(jí)語言,分別使用編譯程序和解釋程序?qū)⒃闯绦蚍g成機(jī)器語言程序,然后交計(jì)算機(jī)執(zhí)行。1.2進(jìn)位計(jì)數(shù)制及其轉(zhuǎn)換計(jì)算機(jī)內(nèi)部的信息分為兩大類:控制信息和數(shù)據(jù)信息。控制信息是一系列的控制命令,用于指揮計(jì)算機(jī)如何操作;數(shù)據(jù)信息是計(jì)算機(jī)操作的對(duì)象,一般又可分為數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù)。數(shù)值數(shù)據(jù)用于表示數(shù)量的大小,它有確定的數(shù)值;非數(shù)值數(shù)據(jù)沒有確定的數(shù)值,它主要包括字符、漢字和邏輯數(shù)據(jù)等等。1.2.1計(jì)算機(jī)中的數(shù)據(jù)1.計(jì)算機(jī)中數(shù)的單位1〕位(bit):計(jì)算機(jī)最小的數(shù)據(jù)單位,用縮寫b來表示。2〕字節(jié)(Byte):一個(gè)字節(jié)為8位,即1B=8bit,它是存儲(chǔ)空間的根本計(jì)量單位。3〕字:通常由一個(gè)或假設(shè)干個(gè)字節(jié)組成。4〕數(shù)據(jù)的換算關(guān)系1Byte=8bit1KB=1024B1MB=1024KB1GB=1024MB2.進(jìn)位計(jì)數(shù)制在計(jì)算機(jī)中,二進(jìn)制并不符合人們的習(xí)慣,但是計(jì)算機(jī)內(nèi)部卻采用二進(jìn)制表示信息,其主要原因有如下四點(diǎn):電路簡(jiǎn)單:邏輯電路的通、斷只有兩個(gè)狀態(tài)。工作可靠簡(jiǎn)化運(yùn)算邏輯性強(qiáng):正好代表邏輯代數(shù)中的“真〞與“假〞1.4.2計(jì)算機(jī)中常用的幾種計(jì)數(shù)制在計(jì)算機(jī)的數(shù)制中,要掌握3個(gè)概念,即數(shù)碼、基數(shù)和位權(quán)。數(shù)碼:一個(gè)數(shù)制中表示根本數(shù)值大小的不同數(shù)字符號(hào)。 八進(jìn)制有8個(gè)數(shù)碼:0、1、2、3、4、5、6、7。基數(shù):一個(gè)數(shù)值所使用數(shù)碼的個(gè)數(shù)。 八進(jìn)制的基數(shù)為8。位權(quán):一個(gè)數(shù)值中某一位上的1所表示數(shù)值的大小。 八進(jìn)制的123,1的位權(quán)是64,2的位權(quán)是8,3的位權(quán)是1。1.十進(jìn)制〔Decimalnotation〕十進(jìn)制的特點(diǎn)如下:有10個(gè)數(shù)碼:0、1、2、3、4、5、6、7、8、9基數(shù):10逢十進(jìn)一〔加法運(yùn)算〕,借一當(dāng)十〔減法運(yùn)算〕按權(quán)展開式例:將十進(jìn)制數(shù)456.24寫成按權(quán)展開式形式為:2.二進(jìn)制〔Binarynotation〕二進(jìn)制有如下特點(diǎn):有兩個(gè)數(shù)碼:0、1?;鶖?shù)為:2。逢二進(jìn)一〔加法運(yùn)算〕,借一當(dāng)二〔減法運(yùn)算〕。按權(quán)展開式。例如:把寫成展開式,它表示的十進(jìn)制數(shù)為:3.八進(jìn)制〔Octalnotation〕八進(jìn)制的特點(diǎn)如下:有8個(gè)數(shù)碼:0、1、2、3、4、5、6、7基數(shù)為:8逢八進(jìn)一〔加法運(yùn)算〕,借一當(dāng)八〔減法運(yùn)算〕按權(quán)展開式例如:相當(dāng)于十進(jìn)制數(shù)為:4.十六進(jìn)制〔Hexadecimalnotation〕十六進(jìn)制有如下特點(diǎn):有16個(gè)數(shù)碼:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。基數(shù):16。逢十六進(jìn)一〔加法運(yùn)算〕,減一當(dāng)十六〔減法運(yùn)算〕。按權(quán)展開式。例如:十六進(jìn)制數(shù)代表的十進(jìn)制數(shù)為:

選擇題:以下四個(gè)選項(xiàng)中,哪個(gè)不是七進(jìn)制數(shù)A.256B.332 C.347 D.123同理,任意一個(gè)二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)也可用位權(quán)表示。例如:(101.11)2=1×22+0×21+1×20+1×2?1+1×2?2(124.36)8=1×82+2×81+4×80+3×8?1+6×8?2(AC.B5)16=A×161+C×160+B×16?1+5×16?2據(jù)上述概念,可推廣出表示任意進(jìn)制數(shù)的通式:

表1-1幾種常用進(jìn)制之間的對(duì)照關(guān)系十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F1.4.3常用計(jì)數(shù)制之間的轉(zhuǎn)換1.X〔X=2、8、16進(jìn)制數(shù)→十進(jìn)制數(shù)〕二進(jìn)制數(shù)→十進(jìn)制數(shù):以2為基數(shù)按權(quán)展開并相加八進(jìn)制數(shù)→十進(jìn)制數(shù):以8為基數(shù)按權(quán)展開并相加。十六進(jìn)制數(shù)→十進(jìn)制數(shù):以16為基數(shù)按權(quán)展開并相加。

2.十進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù)1〕整數(shù)局部的轉(zhuǎn)換整數(shù)局部的轉(zhuǎn)換采用的是除2取余法。2〕小數(shù)局部的轉(zhuǎn)換小數(shù)局部的轉(zhuǎn)換采用乘2取整法。十進(jìn)制轉(zhuǎn)換成二進(jìn)制除2取余法1252152312622723212余數(shù)10111101(125)10=(1111101)2例:將十進(jìn)制數(shù)〔0.534〕10轉(zhuǎn)換成相應(yīng)的二進(jìn)制數(shù)。結(jié)果為:〔0.534〕10=〔0.10001〕2十進(jìn)制轉(zhuǎn)換成八進(jìn)制除8取余法125818158余數(shù)5710(125)10=(175)8十進(jìn)制轉(zhuǎn)換成十六進(jìn)制除16取余法30016余數(shù)12(C)(300)10=(12C)1618162116013.八進(jìn)制與二進(jìn)制數(shù)之間的轉(zhuǎn)換1〕八進(jìn)制轉(zhuǎn)換為二進(jìn)制數(shù)八進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)所使用的轉(zhuǎn)換原那么是“一位拆三位〞,即把一位八進(jìn)制數(shù)對(duì)應(yīng)于三位二進(jìn)制數(shù),然后按順序連接即可。2〕二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)可概括為“三位并一位〞,即從小數(shù)點(diǎn)開始向左右兩邊以每三位為一組,缺乏三位時(shí)補(bǔ)0,然后每組改成等值的一位八進(jìn)制數(shù)即可。

“一位拆三位〞“三位并一位〞4.二進(jìn)制數(shù)與十六進(jìn)制數(shù)的相互轉(zhuǎn)換1〕二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的轉(zhuǎn)換原那么是:“四位并一位〞,即以小數(shù)點(diǎn)為界,整數(shù)局部從右向左每4位為一組,假設(shè)最后一組缺乏4位,那么在最高位前面添0補(bǔ)足4位,然后從左邊第一組起,將每組中的二進(jìn)制數(shù)按權(quán)數(shù)相加得到對(duì)應(yīng)的十六進(jìn)制數(shù),并依次寫出即可;小數(shù)局部從左向右每4位為一組,最后一組缺乏4位時(shí),尾部用0補(bǔ)足4位,然后按順序?qū)懗雒拷M二進(jìn)制數(shù)對(duì)應(yīng)的十六進(jìn)制數(shù)。2〕十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的轉(zhuǎn)換原那么是:“一位拆四位〞,即把1位十六進(jìn)制數(shù)寫成對(duì)應(yīng)的4位二進(jìn)制數(shù),然后按順序連接即可。

“四位并一位〞“一位拆四位〞(10101.11)2轉(zhuǎn)換成十進(jìn)制(10101.11)2=1X24+0X23+1X22+0X21+1X20+1X2-1+1X2-2

=16+0+4+0+1+0.5+0.25

=21.75(100101)2分別轉(zhuǎn)換成八進(jìn)制和十六進(jìn)制轉(zhuǎn)換成八進(jìn)制:100101=100101=(45)8轉(zhuǎn)換成十六進(jìn)制:100101=00100101=(25)16(10101.11)2=1X24+0X23+1X22+0X21+1X20+1X2-1+1X2-2

=16+0+4+0+1+0.5+0.25

=21.75100101=100101=(45)8100101=00100101=(25)16由以上方法可以看出,(25)10=(11001)2=(19)16=(31)8,(0.5)10=(0.1)2=(0.8)16=(0.4)8。在計(jì)算機(jī)里,通常用數(shù)字后面跟一個(gè)英文字母來表示該數(shù)的數(shù)制。十進(jìn)制數(shù)一般用D(Decimal)、二進(jìn)制數(shù)用B(Binary)、八進(jìn)制數(shù)用O(Octal)、十六進(jìn)制數(shù)用H(Hexadecimal)來表示。由于英文字母O容易和零誤會(huì),所以也可以用Q來表示八進(jìn)制。另外,計(jì)算機(jī)操作中一般默認(rèn)使用十進(jìn)制,所以十進(jìn)制數(shù)可以不標(biāo)進(jìn)制。1.3計(jì)算機(jī)中數(shù)與字符的表示方法1.3.1數(shù)值數(shù)據(jù)的編碼及其運(yùn)算1.二進(jìn)制數(shù)的編碼及運(yùn)算我們很容易想到,數(shù)據(jù)的正負(fù)號(hào)可用一位二進(jìn)制的0和1兩個(gè)狀態(tài)來表示,這樣,二進(jìn)制數(shù)值數(shù)據(jù)在計(jì)算機(jī)中就能方便表示了。為了盡可能地簡(jiǎn)化對(duì)二進(jìn)制數(shù)值數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算用到的規(guī)那么,機(jī)器將二進(jìn)制數(shù)值數(shù)據(jù)進(jìn)行編碼表示。計(jì)算機(jī)中的數(shù)采用二進(jìn)制數(shù),字母、符號(hào)等也只能采用二進(jìn)制代碼〔0,1〕的排列組合表示〔編碼〕。(兩種編碼:BCD碼、ASCII碼〕1.BCD碼〔8421碼、二──十進(jìn)制數(shù)〕解決十進(jìn)制數(shù)在計(jì)算機(jī)內(nèi)部如何表示。BCD碼規(guī)定用四位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù)。對(duì)多位十進(jìn)制數(shù),只要把每一位十進(jìn)制數(shù)分別表示為四位二進(jìn)制數(shù)即可。十進(jìn)制BCD碼00000100012001030011401005010160110701118100091001十進(jìn)制BCD碼

28001010009561001010101101.3計(jì)算機(jī)中數(shù)與字符的表示方法2.ASCII碼2.ASCII碼解決字母、符號(hào)在計(jì)算機(jī)內(nèi)部如何表示。根本ASCII碼〔標(biāo)準(zhǔn)ASCII碼〕用七位二進(jìn)制數(shù)表示一個(gè)符號(hào)〔共128個(gè)〕;書寫:用兩位十六進(jìn)制數(shù)書寫,如41H----A;種類:1〕控制字符〔前32個(gè)和最后一個(gè)〕:0D---回車,0A---換行;2〕其他為打印字符〔可顯示字符〕;應(yīng)記住的ASCII碼:30H~39H,41H,61H擴(kuò)展ASCII碼用八位二進(jìn)制數(shù)表示一個(gè)符號(hào)〔共256個(gè)〕。機(jī)器數(shù):帶符號(hào)的二進(jìn)制數(shù)值數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的編碼。真值:機(jī)器數(shù)所代表的實(shí)際值。一般機(jī)器數(shù)的最高有效位用來表示數(shù)的正負(fù)符號(hào),0表示正數(shù),1表示負(fù)數(shù)。1.3.1有符號(hào)數(shù)表示方法例如:要表示127和-127,計(jì)算機(jī)中可以采取編碼為:01111111和11111111那么127和-127是真值〔實(shí)際的值〕01111111和11111111是機(jī)器數(shù)1.3.1有符號(hào)數(shù)表示方法0.無符號(hào)數(shù)、有符號(hào)數(shù)、機(jī)器數(shù)、真值1.原碼正數(shù)原碼:符號(hào)位為0,數(shù)值位照抄。負(fù)數(shù)原碼:符號(hào)位為1,數(shù)值位照抄。例:X=+25=+00011001B[X]原=00011001BX=-25=-00011001B[X]原=10011001B2.反碼正數(shù)反碼:符號(hào)位為0,數(shù)值位照抄。負(fù)數(shù)反碼:符號(hào)位為1,數(shù)值位取反。例:X=+25=+00011001B[X]反=00011001BX=-25=-00011001B[X]反=11100110B原碼和反碼表數(shù)范圍相同,都是-127~+127。3.補(bǔ)碼3.補(bǔ)碼為了將減法運(yùn)算變成加法來做,有符號(hào)數(shù)在計(jì)算機(jī)內(nèi)一律采用補(bǔ)碼表示。正數(shù)補(bǔ)碼:符號(hào)位為0,數(shù)值位照抄。負(fù)數(shù)補(bǔ)碼:符號(hào)位為1,數(shù)值位取反加一。例:X=+25=+00011001B[X]補(bǔ)=00011001BX=-25=-00011001B[X]反=11100110B[X]補(bǔ)=11100111B

下面是原碼、反碼和補(bǔ)碼的小結(jié)。原碼、反碼、補(bǔ)碼總結(jié):1〕正數(shù)的原碼反碼補(bǔ)碼相同;負(fù)數(shù)的原碼反碼補(bǔ)碼各不相同,但符號(hào)位都是1。2〕設(shè)字長(zhǎng)為八位,原碼反碼的表示范圍為

-127~+127,補(bǔ)碼的表數(shù)范圍為-128~+127。3〕某負(fù)數(shù)的補(bǔ)碼,求該負(fù)數(shù)的真值,方法如下:①符號(hào)位不動(dòng),其余位求反加一,得到的是該負(fù)數(shù)的原碼;②根據(jù)原碼即可寫出該負(fù)數(shù)的真值。例:[X]補(bǔ)=11111100B[X]原=10000011B+1=10000100BX=-0000100=-4二進(jìn)制數(shù)補(bǔ)碼的運(yùn)算補(bǔ)碼的運(yùn)算規(guī)那么:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)[X?Y]補(bǔ)=[X]補(bǔ)+[?Y]補(bǔ)[Y]補(bǔ)求[?Y]補(bǔ)的方法:將[Y]補(bǔ)各位按位取反(包括符號(hào)位),末位加1。【例1-19】二進(jìn)制數(shù)補(bǔ)碼的運(yùn)算規(guī)那么證明舉例。設(shè) X1=+0001100 X2=?0001100Y1=+0000101 Y2=?0000101那么 [X1]補(bǔ)=0?0001100 [X2]補(bǔ)=1?1110100 [Y1]補(bǔ)=0?0000101 [Y2]補(bǔ)=1?1111011①計(jì)算X1+Y1。 +0001100 X1 +〕 +0000101 Y1 +0010001 X1+Y1[X1+Y1]補(bǔ)=?00010001 00001100 [X1]補(bǔ)+〕00000101 [Y1]補(bǔ) 00010001 [X1]補(bǔ)+[Y1]補(bǔ)因?yàn)閇X1+Y1]補(bǔ)=?[00010001]補(bǔ)=[X1]補(bǔ)+[Y1]補(bǔ)所以[X1+Y1]補(bǔ)=[X1]補(bǔ)+[Y1]補(bǔ)②計(jì)算X1?Y1 +0001100 X1 -〕 +0000101 Y1 +0000111 X1?Y1 00001100 [X1]補(bǔ)+〕 11111011 [?Y1]補(bǔ)100000111 [X1]補(bǔ)+[?Y1]補(bǔ)因?yàn)閇X1?Y1]補(bǔ)=[00000111]補(bǔ)=[X1]補(bǔ)+[?Y1]補(bǔ)所以[X1?Y1]補(bǔ)=[X1]補(bǔ)+[?Y1]補(bǔ)4.用補(bǔ)碼作減法〔補(bǔ)充講義〕我們用實(shí)例說明計(jì)算機(jī)在執(zhí)行減法指令時(shí),是如何把減法變成加法來做的〔設(shè)字長(zhǎng)為8位〕。例1:(+5)-(+4)即(+00000101〕-〔+00000100〕①機(jī)器中+5和+4都用補(bǔ)碼表示。②對(duì)減數(shù)求補(bǔ)(求反加一〕,得到〔-4〕的補(bǔ)碼:11111100③〔+5〕的補(bǔ)碼加〔-4〕的補(bǔ)碼:00000101+11111100 ——————————100000001④將結(jié)果00000001看作補(bǔ)碼,其真值即為+1。進(jìn)位被自動(dòng)舍棄例2(+5)-(-4)即(+0000101)-(-0000100〕①機(jī)器中+5和-4都用補(bǔ)碼表示。(-4)補(bǔ)=11111100②對(duì)減數(shù)求補(bǔ),得到的是+4的補(bǔ)碼:00000100③將+5的補(bǔ)碼加+4的補(bǔ)碼00000101+00000100——————————00001001④將結(jié)果看成補(bǔ)碼,其真值即為正確結(jié)果+9。例3:〔-5〕-〔+4〕和〔-5〕-〔-4〕步驟同上??傊孩俦粶p數(shù)和減數(shù)都用補(bǔ)碼表示;

②機(jī)器對(duì)減數(shù)先求補(bǔ),而后做加;

③將計(jì)算結(jié)果看作補(bǔ)碼。由此可看出,計(jì)算機(jī)引入了補(bǔ)碼編碼后,帶來了以下幾個(gè)優(yōu)點(diǎn):減法轉(zhuǎn)化成了加法:這樣大大簡(jiǎn)化了運(yùn)算器硬件電路的設(shè)計(jì),加減法可用同一硬件電路進(jìn)行處理。運(yùn)算時(shí),符號(hào)位與數(shù)值位同等對(duì)待,都按二進(jìn)制數(shù)參加運(yùn)算;符號(hào)位產(chǎn)生的進(jìn)位丟掉不管,其結(jié)果是正確的。這大大簡(jiǎn)化了運(yùn)算規(guī)那么。二進(jìn)制運(yùn)算〔含十六進(jìn)制運(yùn)算〕1.算術(shù)運(yùn)算與十進(jìn)制運(yùn)算相同,只不過是逢2進(jìn)1,借1當(dāng)2。 加法 減法 乘法0+0=0 0‐0=0 0×0=00+1=10‐1=1 0×1=01+0=1 1‐0=1 1×0=01+1=10 1‐1=0 1×1=12.十六進(jìn)制算術(shù)運(yùn)算:與十進(jìn)制運(yùn)算相同,但①逢16進(jìn)1,借1當(dāng)16;②注意運(yùn)算結(jié)果如為A,B,C,D,E,F(xiàn),不能寫成10,11,12,13,14,15。例1:計(jì)算85AH+924H85A+924————

117E例2:計(jì)算800H‐1800‐001————7FF不可以寫成14逢16進(jìn)13.邏輯數(shù)據(jù)的編碼邏輯數(shù)據(jù)是用來表示“是〞與“否〞,或稱“真〞與“假〞兩個(gè)狀態(tài)的數(shù)據(jù)。在計(jì)算機(jī)中,用“1〞表示“真〞或“是〞,用“0〞表示“假〞或“否〞。需要注意的是,這里的1和0沒有數(shù)值和大小概念,只有邏輯意義。對(duì)邏輯數(shù)據(jù)只能進(jìn)行邏輯運(yùn)算,例如邏輯非、邏輯加、邏輯乘等根本邏輯運(yùn)算和由根本邏輯運(yùn)算構(gòu)成的各種組合邏輯運(yùn)算,運(yùn)算結(jié)果仍是邏輯數(shù)據(jù)。下面介紹一下根本邏輯運(yùn)算的運(yùn)算規(guī)那么。3.邏輯運(yùn)算與運(yùn)算〔AND;∧〕:1∧0=0 1∧1=1 0∧0=0 0∧1=0或運(yùn)算〔OR;∨〕:1∨0=1 1∨1=1 0∨0=0 0∨1=1非運(yùn)算〔NOT;~或—〕:~0=1 〔0=1〕 ~1=0〔1=0〕異或運(yùn)算〔XOR;⊕〕1⊕0=1 1⊕1=0 0⊕0=0 0⊕1=1注意:邏輯運(yùn)算是按位運(yùn)算。

溫馨提示

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