




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章匯編語言根底知識1.1匯編語言概述1.2進位計數制及其轉換1.3計算機中數與字符的表示方法習題11.1匯編語言概述1.1.1匯編語言的根本概念匯編語言是機器語言的符號表示形式。在匯編語言出現之前,計算機使用機器語言來控制計算機的各種動作。所謂機器語言,就是用“0〞和“1〞所組成的一串二進制數所表示的命令或數據,機器的硬件可以直接識別和執行,不需要進行翻譯。機器語言的特點是命令代碼效率高,但不容易記憶,不利于推廣和使用;程序員借助機器語言編程時,要用數值表示指令和地址,不但費時費力,而且容易出錯。匯編語言將機器語言指令和地址符號化,程序員只需要記住符號名并用其編程,匯編器負責把匯編程序翻譯成機器指令和正確的地址數值。大多數程序應該也可以用高級語言編寫,但是在某些情況下匯編語言也是必不可少的。匯編語言可以訪問計算機的所有指令,可以利用計算機的所有特性,而高級語言就沒有這樣的能力,高級語言能做的事情匯編語言都能做,而匯編語言能做的高級語言不一定能做到。例如,如果計算機有一個溢出位,匯編程序可以測試它,而一個JAVA程序就不能直接測試溢出位。匯編語言可以直接訪問存放器,而高級語言那么不一定能訪問。1.1.2匯編語言的特點匯編語言相對機器語言而言好記好用,但遠不如高級語言方便、實用,而且編寫同樣的程序,使用匯編語言比使用高級語言花費的時間更多,調試和維護更困難。既然如此,為什么還要使用匯編語言呢?主要有兩個原因:性能和對計算機的完全控制。一般而言,匯編語言具有如下特點:1)執行速度快一個匯編語言程序,要比高級語言程序執行得更快。程序的執行速度對于某些應用來說是至關重要的。對于這些應用,單純使用高級語言往往達不到要求,單純使用匯編語言編寫程序也并不是最好的方案,許多成功的大型應用程序往往使用的是混合編程。首先使用高級語言編寫整個程序,然后測試程序的執行時間,再使用匯編語言重寫其中最費時間的局部。這樣做的依據是在實際使用中,通常程序的大局部執行時間都花費在一小局部代碼上。2)程序短小一個匯編語言程序,要比高級語言程序更小。在某些情況下,設備中的嵌入式處理器往往只有很少的內存,使用匯編語言可能是惟一的方法。如智能卡中有CPU,但是智能卡中很難有1?MB以上的內存,也不可能有帶分頁的硬盤,但智能卡又必須執行復雜的加密解密計算。個人數字助理〔PDA〕和其他使用電池作為能源的無線電子設備,為了節省電池的電力,往往也只有很少的內存,它們也需要使用短小精悍而且具有高效率的機器代碼。3)可以直接控制硬件某些應用程序要求能夠完全控制計算機硬件,這也必須使用匯編語言。如操作系統中的低級中斷和陷阱處理程序,以及許多嵌入式實時系統中的設備控制程序都屬于這一類應用。4)可以方便地編譯編譯器可以產生供編程者使用的匯編程序或者自己執行匯編過程。因此,為了理解編譯器的工作原理,必須首先理解匯編語言。5)輔助計算機工作者掌握計算機體系結構研究匯編語言可以使人們清楚實際計算機結構。特別是對于學習計算機體系結構的學生,編寫匯編語言是在結構層理解計算機的惟一途徑。計算機的程序設計語言1.機器語言低級語言2.匯編語言程序設計語言3.高級語言C/C++、JAVA、 DELPHI……1.1機器語言機器語言是機器指令的集合。機器指令展開來講就是一臺機器可以正確執行的命令。1.1機器語言指令:01010000(PUSHAX)電平脈沖:
1.1機器語言程序員們將0、1數字編程的程序代碼打在紙帶或卡片上,1打孔,0不打孔,再將程序通過紙帶機或卡片機輸入計算機,進行運算。例如應用8086CPU完成運算:S=768+12288–12801.1機器語言S=768+12288-1280機器碼:
假設將程序錯寫成以下這樣,請找處錯誤:
1.1機器語言在顯示器上輸出“welcometomasm〞。機器碼看到這樣的程序,你會有什么感想?如果程序里有一個“1〞被誤寫為“0〞,又如何去查找呢?1.2匯編語言的產生匯編語言的主體是匯編指令。匯編指令和機器指令的差異在于指令的表示方法上。匯編指令是機器指令便于記憶的書寫格式。匯編指令是機器指令的助記符。1.2匯編語言的產生機器指令:操作:存放器BX的內容送到AX中匯編指令:MOVAX,BX這樣的寫法與人類語言接近,便于閱讀和記憶。存放器存放器:簡單的講是CPU中可以存儲數據的器件,一個CPU中有多個存放器。AX是其中一個存放器的代號,BX是另一個存放器的代號。更詳細的內容我們在以后的課程中將會講到。1.2匯編語言的產生計算機能讀懂的只有機器指令,那么如何讓計算機執行程序員用匯編指令編寫的程序呢?用匯編語言編寫程序的工作過程1.3匯編語言的組成匯編語言由以下3類組成:1、匯編指令〔機器碼的助記符〕2、偽指令〔由編譯器執行〕3、其它符號〔由編譯器識別〕匯編語言的核心是匯編指令,它決定了匯編語言的特性。3.高級語言機器語言和匯編語言以外的程序設計語言統稱高級語言。其特點是更加接近自然語言和慣用的數學表達形式,與計算機硬件結構無關,因而便于使用,便于交流和推廣。總之,高級語言編程效率高,但運行效率低。高級語言可分成編譯型和解釋型高級語言,分別使用編譯程序和解釋程序將源程序翻譯成機器語言程序,然后交計算機執行。1.2進位計數制及其轉換計算機內部的信息分為兩大類:控制信息和數據信息。控制信息是一系列的控制命令,用于指揮計算機如何操作;數據信息是計算機操作的對象,一般又可分為數值數據和非數值數據。數值數據用于表示數量的大小,它有確定的數值;非數值數據沒有確定的數值,它主要包括字符、漢字和邏輯數據等等。1.2.1計算機中的數據1.計算機中數的單位1〕位(bit):計算機最小的數據單位,用縮寫b來表示。2〕字節(Byte):一個字節為8位,即1B=8bit,它是存儲空間的根本計量單位。3〕字:通常由一個或假設干個字節組成。4〕數據的換算關系1Byte=8bit1KB=1024B1MB=1024KB1GB=1024MB2.進位計數制在計算機中,二進制并不符合人們的習慣,但是計算機內部卻采用二進制表示信息,其主要原因有如下四點:電路簡單:邏輯電路的通、斷只有兩個狀態。工作可靠簡化運算邏輯性強:正好代表邏輯代數中的“真〞與“假〞1.4.2計算機中常用的幾種計數制在計算機的數制中,要掌握3個概念,即數碼、基數和位權。數碼:一個數制中表示根本數值大小的不同數字符號。 八進制有8個數碼:0、1、2、3、4、5、6、7。基數:一個數值所使用數碼的個數。 八進制的基數為8。位權:一個數值中某一位上的1所表示數值的大小。 八進制的123,1的位權是64,2的位權是8,3的位權是1。1.十進制〔Decimalnotation〕十進制的特點如下:有10個數碼:0、1、2、3、4、5、6、7、8、9基數:10逢十進一〔加法運算〕,借一當十〔減法運算〕按權展開式例:將十進制數456.24寫成按權展開式形式為:2.二進制〔Binarynotation〕二進制有如下特點:有兩個數碼:0、1。基數為:2。逢二進一〔加法運算〕,借一當二〔減法運算〕。按權展開式。例如:把寫成展開式,它表示的十進制數為:3.八進制〔Octalnotation〕八進制的特點如下:有8個數碼:0、1、2、3、4、5、6、7基數為:8逢八進一〔加法運算〕,借一當八〔減法運算〕按權展開式例如:相當于十進制數為:4.十六進制〔Hexadecimalnotation〕十六進制有如下特點:有16個數碼:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。基數:16。逢十六進一〔加法運算〕,減一當十六〔減法運算〕。按權展開式。例如:十六進制數代表的十進制數為:
選擇題:以下四個選項中,哪個不是七進制數A.256B.332 C.347 D.123同理,任意一個二進制數、八進制數和十六進制數也可用位權表示。例如:(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據上述概念,可推廣出表示任意進制數的通式:
表1-1幾種常用進制之間的對照關系十進制二進制八進制十六進制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F1.4.3常用計數制之間的轉換1.X〔X=2、8、16進制數→十進制數〕二進制數→十進制數:以2為基數按權展開并相加八進制數→十進制數:以8為基數按權展開并相加。十六進制數→十進制數:以16為基數按權展開并相加。
2.十進制轉換為二進制數1〕整數局部的轉換整數局部的轉換采用的是除2取余法。2〕小數局部的轉換小數局部的轉換采用乘2取整法。十進制轉換成二進制除2取余法1252152312622723212余數10111101(125)10=(1111101)2例:將十進制數〔0.534〕10轉換成相應的二進制數。結果為:〔0.534〕10=〔0.10001〕2十進制轉換成八進制除8取余法125818158余數5710(125)10=(175)8十進制轉換成十六進制除16取余法30016余數12(C)(300)10=(12C)1618162116013.八進制與二進制數之間的轉換1〕八進制轉換為二進制數八進制數轉換成二進制數所使用的轉換原那么是“一位拆三位〞,即把一位八進制數對應于三位二進制數,然后按順序連接即可。2〕二進制數轉換成八進制數二進制數轉換成八進制數可概括為“三位并一位〞,即從小數點開始向左右兩邊以每三位為一組,缺乏三位時補0,然后每組改成等值的一位八進制數即可。
“一位拆三位〞“三位并一位〞4.二進制數與十六進制數的相互轉換1〕二進制數轉換成十六進制數二進制數轉換成十六進制數的轉換原那么是:“四位并一位〞,即以小數點為界,整數局部從右向左每4位為一組,假設最后一組缺乏4位,那么在最高位前面添0補足4位,然后從左邊第一組起,將每組中的二進制數按權數相加得到對應的十六進制數,并依次寫出即可;小數局部從左向右每4位為一組,最后一組缺乏4位時,尾部用0補足4位,然后按順序寫出每組二進制數對應的十六進制數。2〕十六進制數轉換成二進制數十六進制數轉換成二進制數的轉換原那么是:“一位拆四位〞,即把1位十六進制數寫成對應的4位二進制數,然后按順序連接即可。
“四位并一位〞“一位拆四位〞(10101.11)2轉換成十進制(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分別轉換成八進制和十六進制轉換成八進制:100101=100101=(45)8轉換成十六進制: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。在計算機里,通常用數字后面跟一個英文字母來表示該數的數制。十進制數一般用D(Decimal)、二進制數用B(Binary)、八進制數用O(Octal)、十六進制數用H(Hexadecimal)來表示。由于英文字母O容易和零誤會,所以也可以用Q來表示八進制。另外,計算機操作中一般默認使用十進制,所以十進制數可以不標進制。1.3計算機中數與字符的表示方法1.3.1數值數據的編碼及其運算1.二進制數的編碼及運算我們很容易想到,數據的正負號可用一位二進制的0和1兩個狀態來表示,這樣,二進制數值數據在計算機中就能方便表示了。為了盡可能地簡化對二進制數值數據進行算術運算用到的規那么,機器將二進制數值數據進行編碼表示。計算機中的數采用二進制數,字母、符號等也只能采用二進制代碼〔0,1〕的排列組合表示〔編碼〕。(兩種編碼:BCD碼、ASCII碼〕1.BCD碼〔8421碼、二──十進制數〕解決十進制數在計算機內部如何表示。BCD碼規定用四位二進制數表示一位十進制數。對多位十進制數,只要把每一位十進制數分別表示為四位二進制數即可。十進制BCD碼00000100012001030011401005010160110701118100091001十進制BCD碼
28001010009561001010101101.3計算機中數與字符的表示方法2.ASCII碼2.ASCII碼解決字母、符號在計算機內部如何表示。根本ASCII碼〔標準ASCII碼〕用七位二進制數表示一個符號〔共128個〕;書寫:用兩位十六進制數書寫,如41H----A;種類:1〕控制字符〔前32個和最后一個〕:0D---回車,0A---換行;2〕其他為打印字符〔可顯示字符〕;應記住的ASCII碼:30H~39H,41H,61H擴展ASCII碼用八位二進制數表示一個符號〔共256個〕。機器數:帶符號的二進制數值數據在計算機內部的編碼。真值:機器數所代表的實際值。一般機器數的最高有效位用來表示數的正負符號,0表示正數,1表示負數。1.3.1有符號數表示方法例如:要表示127和-127,計算機中可以采取編碼為:01111111和11111111那么127和-127是真值〔實際的值〕01111111和11111111是機器數1.3.1有符號數表示方法0.無符號數、有符號數、機器數、真值1.原碼正數原碼:符號位為0,數值位照抄。負數原碼:符號位為1,數值位照抄。例:X=+25=+00011001B[X]原=00011001BX=-25=-00011001B[X]原=10011001B2.反碼正數反碼:符號位為0,數值位照抄。負數反碼:符號位為1,數值位取反。例:X=+25=+00011001B[X]反=00011001BX=-25=-00011001B[X]反=11100110B原碼和反碼表數范圍相同,都是-127~+127。3.補碼3.補碼為了將減法運算變成加法來做,有符號數在計算機內一律采用補碼表示。正數補碼:符號位為0,數值位照抄。負數補碼:符號位為1,數值位取反加一。例:X=+25=+00011001B[X]補=00011001BX=-25=-00011001B[X]反=11100110B[X]補=11100111B
下面是原碼、反碼和補碼的小結。原碼、反碼、補碼總結:1〕正數的原碼反碼補碼相同;負數的原碼反碼補碼各不相同,但符號位都是1。2〕設字長為八位,原碼反碼的表示范圍為
-127~+127,補碼的表數范圍為-128~+127。3〕某負數的補碼,求該負數的真值,方法如下:①符號位不動,其余位求反加一,得到的是該負數的原碼;②根據原碼即可寫出該負數的真值。例:[X]補=11111100B[X]原=10000011B+1=10000100BX=-0000100=-4二進制數補碼的運算補碼的運算規那么:[X+Y]補=[X]補+[Y]補[X?Y]補=[X]補+[?Y]補[Y]補求[?Y]補的方法:將[Y]補各位按位取反(包括符號位),末位加1。【例1-19】二進制數補碼的運算規那么證明舉例。設 X1=+0001100 X2=?0001100Y1=+0000101 Y2=?0000101那么 [X1]補=0?0001100 [X2]補=1?1110100 [Y1]補=0?0000101 [Y2]補=1?1111011①計算X1+Y1。 +0001100 X1 +〕 +0000101 Y1 +0010001 X1+Y1[X1+Y1]補=?00010001 00001100 [X1]補+〕00000101 [Y1]補 00010001 [X1]補+[Y1]補因為[X1+Y1]補=?[00010001]補=[X1]補+[Y1]補所以[X1+Y1]補=[X1]補+[Y1]補②計算X1?Y1 +0001100 X1 -〕 +0000101 Y1 +0000111 X1?Y1 00001100 [X1]補+〕 11111011 [?Y1]補100000111 [X1]補+[?Y1]補因為[X1?Y1]補=[00000111]補=[X1]補+[?Y1]補所以[X1?Y1]補=[X1]補+[?Y1]補4.用補碼作減法〔補充講義〕我們用實例說明計算機在執行減法指令時,是如何把減法變成加法來做的〔設字長為8位〕。例1:(+5)-(+4)即(+00000101〕-〔+00000100〕①機器中+5和+4都用補碼表示。②對減數求補(求反加一〕,得到〔-4〕的補碼:11111100③〔+5〕的補碼加〔-4〕的補碼:00000101+11111100 ——————————100000001④將結果00000001看作補碼,其真值即為+1。進位被自動舍棄例2(+5)-(-4)即(+0000101)-(-0000100〕①機器中+5和-4都用補碼表示。(-4)補=11111100②對減數求補,得到的是+4的補碼:00000100③將+5的補碼加+4的補碼00000101+00000100——————————00001001④將結果看成補碼,其真值即為正確結果+9。例3:〔-5〕-〔+4〕和〔-5〕-〔-4〕步驟同上。總之:①被減數和減數都用補碼表示;
②機器對減數先求補,而后做加;
③將計算結果看作補碼。由此可看出,計算機引入了補碼編碼后,帶來了以下幾個優點:減法轉化成了加法:這樣大大簡化了運算器硬件電路的設計,加減法可用同一硬件電路進行處理。運算時,符號位與數值位同等對待,都按二進制數參加運算;符號位產生的進位丟掉不管,其結果是正確的。這大大簡化了運算規那么。二進制運算〔含十六進制運算〕1.算術運算與十進制運算相同,只不過是逢2進1,借1當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.十六進制算術運算:與十進制運算相同,但①逢16進1,借1當16;②注意運算結果如為A,B,C,D,E,F,不能寫成10,11,12,13,14,15。例1:計算85AH+924H85A+924————
117E例2:計算800H‐1800‐001————7FF不可以寫成14逢16進13.邏輯數據的編碼邏輯數據是用來表示“是〞與“否〞,或稱“真〞與“假〞兩個狀態的數據。在計算機中,用“1〞表示“真〞或“是〞,用“0〞表示“假〞或“否〞。需要注意的是,這里的1和0沒有數值和大小概念,只有邏輯意義。對邏輯數據只能進行邏輯運算,例如邏輯非、邏輯加、邏輯乘等根本邏輯運算和由根本邏輯運算構成的各種組合邏輯運算,運算結果仍是邏輯數據。下面介紹一下根本邏輯運算的運算規那么。3.邏輯運算與運算〔AND;∧〕:1∧0=0 1∧1=1 0∧0=0 0∧1=0或運算〔OR;∨〕:1∨0=1 1∨1=1 0∨0=0 0∨1=1非運算〔NOT;~或—〕:~0=1 〔0=1〕 ~1=0〔1=0〕異或運算〔XOR;⊕〕1⊕0=1 1⊕1=0 0⊕0=0 0⊕1=1注意:邏輯運算是按位運算。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業節能減排的技術與政策探討
- 工業電機故障診斷與維護策略
- 工業設計在產品創新中的價值
- 工業節能的智慧能源管理
- 工業設計與產品創新表達
- 工業設計產品外觀的色彩搭配與創新性
- 工作環境對教師工作滿意度的影響
- 工廠企業消防安全管理
- 工程機械設備安全防護技術
- 工廠環境與職業健康安全培訓
- 食管癌病例分析 手術、化療與放療方案優化
- 銀行安全培訓課件
- 2025年我國工程機械出口東南亞市場現狀分析
- 濟鋼人文考試試題及答案
- 安裝費合同協議
- 瑜伽教培理論試題及答案
- 人工智能在化學領域的應用與未來發展展望
- 慢性病管理小組的工作職責與目標
- 《SLT 105-2025水工金屬結構防腐蝕技術規范》知識培訓
- 《汽車構造與拆裝》課程標準 (一)
- 私募股權投資風險評估模型-深度研究
評論
0/150
提交評論