第1章匯編語言基礎知識_第1頁
第1章匯編語言基礎知識_第2頁
第1章匯編語言基礎知識_第3頁
第1章匯編語言基礎知識_第4頁
第1章匯編語言基礎知識_第5頁
已閱讀5頁,還剩55頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、主講:黃仁泰電話761069)郵箱:專業基礎課、限選課軟件開發的一個組成部分一種低級語言的程序設計高級語言程序設計的擴展課程介紹設問:設問: 1為什么要學習匯編語言?為什么要學習匯編語言? 2什么是匯編語言?什么是匯編語言? 3為什么要用十六進制數?為什么要用十六進制數? 4. 怎樣區別計算機中數的含義?怎樣區別計算機中數的含義? 本章重點本章重點匯編語言基本概念匯編語言基本概念十六進制數十六進制數數的補碼表示數的補碼表示BCD碼碼 第一章第一章 基礎知識基礎知識學習匯編語言,重要的是掌握如何學習匯編語言,重要的是掌握如何通過匯編指令和程序來控制計算機各通過匯編指令和

2、程序來控制計算機各個組成部件工作,完成一系列任務。個組成部件工作,完成一系列任務。 學會了匯編語言,就能夠在學會了匯編語言,就能夠在CPU的寄的寄存器級上進行控制和操作,掌握直接存器級上進行控制和操作,掌握直接對計算機硬件編程的方法。對計算機硬件編程的方法。本章介紹學習匯編語言所需的基本本章介紹學習匯編語言所需的基本知識,并通過具體的例子為讀者建知識,并通過具體的例子為讀者建立起匯編語言的初步概念。立起匯編語言的初步概念。計算機以二進制數為基礎。那么控計算機以二進制數為基礎。那么控制計算機工作的機器指令就由二進制計算機工作的機器指令就由二進制數構成,而機器指令的集合稱之制數構成,而機器指令的集

3、合稱之為為機器語言機器語言。如果想讓計算機工作,就要寫出一如果想讓計算機工作,就要寫出一系列二進制的機器碼。系列二進制的機器碼。1.1 匯編語言基本概念匯編語言基本概念二進制表示二進制表示 十六進制表示十六進制表示101110000010001100000000101110000010001100000000 B82300 B82300 000001010001101100000000000001010001101100000000 051B00 051B00 101000110000010000000000101000110000010000000000 A30400 A30400 例如計算

4、例如計算Z=35+27Z=35+27,寫成機器指令為:,寫成機器指令為:用指令助記符表示如下:用指令助記符表示如下:MOV AX,35ADD AX,27MOV Z,AX特點:簡單直觀特點:簡單直觀這些助記符就是匯編指令,用匯編指這些助記符就是匯編指令,用匯編指令編寫的程序稱為匯編語言。令編寫的程序稱為匯編語言。匯編語言匯編語言是一種符號化的機器語言。是一種符號化的機器語言。匯編語言既便于程序員編寫程序,又匯編語言既便于程序員編寫程序,又保留了機器語言可直接而迅速地控制保留了機器語言可直接而迅速地控制機器的長處。匯編語言是直接控制計機器的長處。匯編語言是直接控制計算機工作的最簡便的語言。算機工作

5、的最簡便的語言。 匯編語言的主要特點:匯編語言程序與處理器指令系統密切相關程序員可直接、有效地控制系統硬件形成的可執行文件運行速度快、占用主存容量少匯編語言的優點:直接控制計算機硬件部件可以編寫在“時間”和“空間”兩方面最有效的程序匯編語言的優點使得它在程序設計中占有重要的位置,是不可被取代的匯編語言的缺點:與處理器密切有關需要熟悉計算機硬件系統、考慮許多細節編寫繁瑣,調試、維護、交流和移植困難匯編語言有三種指令形式:匯編語言有三種指令形式:匯編匯編指令、偽指令和宏指令指令、偽指令和宏指令。匯編指令可以翻譯成二進制的機匯編指令可以翻譯成二進制的機器指令代碼。器指令代碼。偽指令和宏指令不能翻譯成

6、機器偽指令和宏指令不能翻譯成機器指令,它們是在匯編期間為匯編指令,它們是在匯編期間為匯編程序提供相關信息使用的。程序提供相關信息使用的。1.2 計算機中數的表示計算機中數的表示進制數的三要素進制數的三要素 :基數、權、進位規:基數、權、進位規則是描述一種進制數的三個要素則是描述一種進制數的三個要素 。十進制數十進制數 二進制二進制 十六進制十六進制 各進制數值對照表各進制數值對照表 各進制間的轉換各進制間的轉換 圖表圖表練習練習1.2.1 進制轉換進制轉換l十進制數十進制數 數碼為:數碼為:0、1、2、3、4、5、6、7、8、9 基數:基數: 10 權:權: 10 的的 N-1 次方次方 進位

7、規則:逢十進一進位規則:逢十進一 例如:十進制數例如:十進制數 257.36=2102+5101+7100 +310-1+610-2 l二進制二進制 數碼為:數碼為:0、1 基數:基數: 2 權:權: 2 的的 N-1 次方次方 進位規則:逢二進一進位規則:逢二進一 例如:二進制數例如:二進制數1101.01=123+122+021+120 +02-1+12-2l十六進制十六進制 數碼為:數碼為:0、1、2、3、4、5、6、7、 8、9、A、B、C、D、E、F 基數:基數: 16 權:權: 16 的的 N-1 次方次方 進位規則:逢十六進一進位規則:逢十六進一 例如:十六進制數例如:十六進制數

8、 3A6.52=3162+A161+6160 +516-1+216-2 進制數據對照表進制數據對照表數制間的轉換關系數制間的轉換關系按位權展開求和按位權展開求和整數除以整數除以16取余取余小數乘以小數乘以16取整取整八進制數八進制數十六進制十六進制數數二進制數二進制數十進制數十進制數4位化位化1位位1位化位化4位位按位權展開求和按位權展開求和3位位化化1位位1位位化化3位位整數除以整數除以8取余,小數乘以取余,小數乘以8取整取整整數除以整數除以2取余取余小數乘以小數乘以2取整取整按位權展開按位權展開求和求和數制間的轉換關系數制間的轉換關系在計算機中,數據都是以二進制表示的,在計算機中,數據都是

9、以二進制表示的,因此采用因此采用2的的n次方形式描述數的權值大次方形式描述數的權值大小比較方便。小比較方便。 十進制數轉換為二進制數十進制數轉換為二進制數整數轉換采用除2取余法:用2不斷地去除要轉換的數,直到商為0。再將每一步所得的余數,按逆序排列,便可得轉換結果。小數轉換采用乘2取整法:每次用2與小數部分相乘,取乘積的整數部分,再取其小數部分乘2直到小部分為0。將所取整數順序放在小數點后即為轉換結果。例:十進制數例:十進制數58.125轉換為二進制數轉換為二進制數 整數部分,將整數部分,將58轉換成二進制數,轉換成二進制數,逐次除逐次除2取余取余: 2 58 2 29 0 2 14 1 2

10、7 0 2 3 1 2 1 1 0 1 得到的余數從后至前依次為:得到的余數從后至前依次為: 1、1、 1、 0、 1、 0 可得到:可得到:(58)10(111010)2小數部分,將小數部分,將0. 125轉換為二進制小數,轉換為二進制小數,逐逐次乘次乘2取整取整: 可得:可得:(0. 125)10 (0.001)2 即即58.125=(111010.001)B 0. 125 2 0 . 250 2 0 . 50 2 1 . 0 0例:例:十進制數十進制數58.125轉換為十六進制數轉換為十六進制數 整數部分,將整數部分,將58轉換成十六進制數,逐次除轉換成十六進制數,逐次除16取余:取余:

11、 16 58 16 3 A 0 3 得到的余數從后至前依次為:得到的余數從后至前依次為: 1、1、 1、 0、 0、 1 可得到:可得到:58(3A)H小數部分,將小數部分,將0. 125轉換為十六進制小數,轉換為十六進制小數,逐次乘逐次乘16取整:取整: 0. 125 16 2 . 0 可得:可得: (0. 125)10 (0.2)16 即即58.125=(3A.2)H*練習:練習: 125= ( ) 2* 200= ( ) 2* 33.5= ( ) 2* 68.26= ( ) 2例例1: 二進制數二進制數101101.1B轉換為十進制數轉換為十進制數 二進制數用多項式展開寫成:二進制數用多

12、項式展開寫成: 101101.1B 125024123122 02112012-145.5D 例例2:二進制數二進制數10110.1B轉換為十六進制數轉換為十六進制數 二進制數整數從小數點左邊開始每二進制數整數從小數點左邊開始每4位位 一組,小數從小數點右邊開始每一組,小數從小數點右邊開始每4位一位一 組,不夠位數以組,不夠位數以0補齊:補齊: 101101.1B = 0010 1101. 1000 = 2D.8H例例3:十六進制數39CH轉換為十進制數 按權展開: 39CH 3162916112160 924D 例例4:十六進制數39CH轉換為二進制數 39CH 0011 1001 1100

13、B練習:練習:11001101B = ( )D = ( )H 123H=( )DFFH=( )D 1024D= ( )H 100D= ( )H1.2.2 進制運算進制運算 二進制運算二進制運算 加法規則:加法規則:0+0=0 0+1=11+0=1 1+1=0 (同時向高位進(同時向高位進1)減法規則:減法規則:0-0=0 0-1=1 (同時向高位借(同時向高位借1)1-0=1 1-1=0乘法規則:乘法規則:00=0 01=010=0 11=1除法規則:除法規則:01=0 11=1 例:例:10001011B+01001001B = 11010100B十六進制運算十六進制運算 十六進制按照逢十六

14、進一原則進行運十六進制按照逢十六進一原則進行運算。在匯編語言中,只要求掌握十六算。在匯編語言中,只要求掌握十六進制的加、減、乘運算。進制的加、減、乘運算。 例例1 3F45H+2194H = 60D9H 例例2 68C5H-3428H = 349DH 例例3 12 H16 H = 18CH練習練習: 十六進制的加、減、乘法十六進制的加、減、乘法3F45H+2194 H=669BH -23C6H=341AH -25 H=5FH*6 H=12F4H*1000 H=12 H*16 H=12 H*16 D=12 H*10 H=12 H*10 D=1.2.3 補碼運算補碼運算數的補碼表示數的補碼表示 補

15、碼運算補碼運算 補碼的表示范圍補碼的表示范圍 無符號數表示的范圍無符號數表示的范圍 符號位擴展符號位擴展 1. 機器數與真值機器數與真值在計算機中表示正負號的最簡單方法是約在計算機中表示正負號的最簡單方法是約定用定用 0 表示表示“+”,用,用 1 表示表示“-”。例:例: +101 0101 -101 1101真值:適合于計算機表示的帶有真值:適合于計算機表示的帶有“+”、“-”號的二進制數;號的二進制數;機器數:真值的機器數:真值的“+”、“-”號數值化后所號數值化后所得到的計算機實際能表示的數。得到的計算機實際能表示的數。機器數有三種碼:原碼、反碼、補碼機器數有三種碼:原碼、反碼、補碼

16、一、數的補碼表示一、數的補碼表示機器數應滿足的要求:機器數應滿足的要求: 1.機器數必須能為計算機所表示。機器數必須能為計算機所表示。 2. 機器數與真值的轉換要簡單,辨認機器數與真值的轉換要簡單,辨認要直觀。要直觀。 3 .機器數的運算規則要簡單。機器數的運算規則要簡單。 (1 1)原碼)原碼原碼將最高位作為符號位,正數為原碼將最高位作為符號位,正數為0 0,負,負數為數為1 1,其余,其余7 7位作為數值位。位作為數值位。(3 3)補碼)補碼正數的補碼與正數的原碼一樣。負數的補正數的補碼與正數的原碼一樣。負數的補碼,符號位為碼,符號位為1 1,數值位在原碼的基礎上,數值位在原碼的基礎上取反

17、加取反加1 1。(2 2)反碼)反碼正數的反碼與正數的原碼一樣。負數的反正數的反碼與正數的原碼一樣。負數的反碼,符號位為碼,符號位為1 1,數值位在原碼的基礎上,數值位在原碼的基礎上取反。取反。注:對負數補碼的數值位再取反加注:對負數補碼的數值位再取反加1 1,且符號位變為且符號位變為“- -”,就得到其真值。,就得到其真值。正數直接從補碼得到真值。正數直接從補碼得到真值。字節:字節:8 8位二進制數。位二進制數。如如00000101B00000101B或表示成或表示成05H05H10000101B10000101B或或85H85H。 字:字:1616位二進制數,等于位二進制數,等于2 2字節

18、。字節。如如1100010111010110B1100010111010110B或或C5D6HC5D6H。雙字:雙字:3232位二進制數,又稱為雙精度位二進制數,又稱為雙精度數,等于數,等于4 4字節。字節。如如23456789H23456789H。在計算機中規定采用字節、字、雙在計算機中規定采用字節、字、雙字等單位來表示數據。字等單位來表示數據。例例1 1 十進制數十進制數+5+5和和-5-5分別表示成二進分別表示成二進制數原碼、反碼和補碼。制數原碼、反碼和補碼。+5原原=+5反反=+5補補=00000101B-5原原=10000101B-5反反=11111010B-5補補=11111011

19、B (1)原碼:)原碼: x原原=01101010B = 6AH y原原=11101010B = EAH(2)反碼:正數的反碼等于正數的原碼,)反碼:正數的反碼等于正數的原碼,負數為原碼求反(符號位不變)負數為原碼求反(符號位不變)x反反=x原原=01101010B = 6AH y反反= 10010101B = 95H(3)補碼:正數的補碼等于正數的原碼,負)補碼:正數的補碼等于正數的原碼,負數為原碼求反加數為原碼求反加1(符號位不變)(符號位不變)x補補=x原原=01101010B = 6AH y補補= 10010110B = 96H例例2 變量變量x、y是十進制數。是十進制數。 x=106

20、,y= -106,求其原碼、反碼和補碼。求其原碼、反碼和補碼。例例3 給出補碼,求其十進制真值。給出補碼,求其十進制真值。 00100010B= +34 10010011B= -1101101B= -109 練習:練習:(1)求補碼,并用二進制和十六進制)求補碼,并用二進制和十六進制表示:表示:X1= 95 = B= HX2= -100=X3= -127 =X4= -39 =X5= -128 =X6= -1 =(2 2)從補碼求真值,用)從補碼求真值,用十進制表示十進制表示: :01101101B=11100111B= 10000011B= 00111100B= 2補碼運算 例例1 已知已知x

21、=13,y=6,用補碼計算,用補碼計算xy步驟如下:步驟如下:(1)先將)先將x和和y分別用分別用8位二進制表示:位二進制表示:x =00001101B,y =00000110B (2)求出正數的補碼求出正數的補碼 x補補=0,0001101B y補補=0,0000110B (3)根據補碼運算規則根據補碼運算規則 x-y補補=x補補+-y補補(4)計算計算-y的補碼,即對的補碼,即對+y的補碼再的補碼再求補求補-y補補=1,1111010B(5)減法運算變為補碼的加法)減法運算變為補碼的加法 x 補補 = 0,0001101B +-y 補補 = 1,1111010B x-y 補補 =1 0,0

22、000111B 丟掉符號進位丟掉符號進位求得求得 xy = 00000111B n位二進制數補碼的范圍可用公式位二進制數補碼的范圍可用公式 - 2 n-1 + 2 n-1 1 計算。計算。 (1) 8位二進制補碼的范圍位二進制補碼的范圍:00000000B01111111B - 10000000B111111111B 00 H 7F H - 80 H FF H 0 127D -128 D -1D十進制表示的范圍:十進制表示的范圍:-128+127, - 2 7+ 2 71 (2)16位二進制補碼的范圍位二進制補碼的范圍:十進制表示的范圍:十進制表示的范圍:-32768+32767, - 2 1

23、5+ 2 151 (3)8位無符號數的范圍位無符號數的范圍:2 n1 0000000011111111B 0255D(4)16位無符號數的范圍位無符號數的范圍: 00000000000000001111111111111111B 065535D二、數的表示范圍二、數的表示范圍1 、 8 位擴展到位擴展到 16 位位01110110=76H=0000000001110110=0076H10001010=8AH=1111111110001010=FF8AH2 、 16 位擴展到位擴展到 32 位位0076H=00000076HFF8AH=FFFFFF8AH三、符號位擴展三、符號位擴展 在匯編語言中

24、,常常需要把字節數據變為字、在匯編語言中,常常需要把字節數據變為字、字數據變為雙字,以滿足計算和指令格式的要字數據變為雙字,以滿足計算和指令格式的要求。求。練習:練習: 將字節擴展為字,字擴將字節擴展為字,字擴展到雙字。展到雙字。98H 8045H 3AH F028H 計算機中,數據除采用按計算機中,數據除采用按“值值”表表示外,還采用按示外,還采用按“形形”表示,這就是對表示,這就是對數據進行編碼。數據進行編碼。 所謂編碼,就是用一定規則組合而所謂編碼,就是用一定規則組合而成的若干位二進制碼來表示數或字符成的若干位二進制碼來表示數或字符(字母及符號)。(字母及符號)。 常用的編碼有十進制數的

25、常用代碼、常用的編碼有十進制數的常用代碼、可靠性代碼及字符代碼等??煽啃源a及字符代碼等。 1.3 編碼編碼 十進制數編碼十進制數編碼 BCD碼碼 可靠性編碼可靠性編碼 ASCII碼碼 1.3.1 BCD碼1.十進制數的常用代碼表十進制數8421 碼2421 碼余 3 碼 0 0000 0000 0011 1 0001 0001 0100 2 0010 0010 0101 3 0011 0011 0110 4 0100 0100 0111 5 0101 1011 1000 6 0110 1100 1001 7 0111 1101 1010 8 1000 1110 1011 9 1001 111

26、1 11002. 壓縮的壓縮的 BCD 碼和非壓縮的碼和非壓縮的BCD碼碼 BCD碼又可以表示成壓縮的碼又可以表示成壓縮的 BCD 碼和非壓縮的碼和非壓縮的BCD碼,可根據需要選定。碼,可根據需要選定。 (1)壓縮的)壓縮的BCD碼碼用用1字節二進制數表示兩個字節二進制數表示兩個8421碼,則稱為壓縮的碼,則稱為壓縮的BCD碼。例如:碼。例如:85D = 10000101BCD 364D = 00000011 01100100BCD(2)非壓縮的)非壓縮的BCD碼碼1字節二進制數只表示一個字節二進制數只表示一個8421碼,則稱為非壓縮的碼,則稱為非壓縮的BCD碼。碼。例如:例如:85D = 0

27、0001000 00000101BCD 364D = 00000011 00000110 00000100BCD用BCD碼作十進制運算,規則是逢十進一;但是實際運算時是按照二進制運算的,因此最后要進行調整。對于壓縮BCD碼而言,低4位二進制運算結果如果大于9,要加6調整;高4位二進制運算結果如果大于9,要加60H調整;使其結果符合十進制要求。3.3.十進制數運算十進制數運算例例1 1 23+18=41 用壓縮BCD碼運算:00100011+00011000=00111011,結果不是BCD碼加6修正: 00111011+00000110=01000001=41H 練習:練習: (1) (1)

28、寫出壓縮的寫出壓縮的BCDBCD碼碼 79D=79D= 125D= 125D=(2) (2) 寫出非壓縮的寫出非壓縮的BCDBCD碼碼 64D=64D= 3427D= 3427D=1 00000 00010 00101 00110 00101 01011 01100 01110 10001 100100000001001000110100010101100111100010010 00001 00011 00100 00111 01000 01010 01101 01111 10000 10018421 碼碼8421 奇校驗碼奇校驗碼8421 校驗位校驗位8421 校驗位校驗位8421 偶校驗

29、碼偶校驗碼表 1.7 8421奇偶校驗碼大寫字母大寫字母A-ZA-Z: 41H-5AH41H-5AH小寫字母小寫字母a-za-z: 61H-7AH61H-7AH數字數字0-90-9: 30H-39H30H-39H空格:空格: 20H20H回車:回車: 0DH0DH換行:換行: 0AH0AH響鈴:響鈴: 07H 07H ASCII常用代碼1.4 實例一實例一 揭開數的面紗揭開數的面紗計算機內存中的數據全部用二進制數表示,計算機內存中的數據全部用二進制數表示,但是這個數具有多重性格。但是這個數具有多重性格。例如:某存儲單元中存放一個字節數例如:某存儲單元中存放一個字節數01010001B,寫成十六

30、進制為,寫成十六進制為51H。若把它。若把它看成數值,它等于十進制的看成數值,它等于十進制的81;把它看成;把它看成BCD碼,它就是十進制數碼,它就是十進制數51;那么把它看成;那么把它看成指令,它代表指令指令,它代表指令PUSH CX;如果把它看成;如果把它看成是是ASCII碼,則它又是大寫字母碼,則它又是大寫字母Q的的ASCII碼。碼。 1.4.1 數的正確表示數的正確表示1.4.2 數的符號問題數的符號問題 在匯編語言中,數都看成是補碼。補碼作在匯編語言中,數都看成是補碼。補碼作為機器數之一,有著重要的作用。在用補為機器數之一,有著重要的作用。在用補碼做運算時,首先要知道這個數是正數還碼做運算時,首先要知道這個數是正數還是負數。對于運算的結果,要能判斷出結是負數。對于運算的結果,要能判斷出結果是否溢出,結果是否有進位;表示成十

溫馨提示

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

評論

0/150

提交評論