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

下載本文檔

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

文檔簡介

1、匯編語言基本知識(shí) 1.1 計(jì)算機(jī)語言系統(tǒng) 計(jì)算機(jī)語言發(fā)展簡史機(jī)器語言匯編語言高級(jí)語言FORTRANBASICCOBOLPASCALC/C+JAVA.1.1.1 機(jī)器語言1.1.2 匯編語言1.1.3 高級(jí)語言1.1.4 匯編語言的特點(diǎn)1.1.1 機(jī)器語言1.機(jī)器指令: CPU能直接識(shí)別并遵照?qǐng)?zhí)行的指令稱為機(jī)器指令,在形式上表現(xiàn)為二進(jìn)制編碼,一般由操作碼和操作數(shù)兩部分構(gòu)成。 操作碼指出要進(jìn)行的操作或運(yùn)算,如加減、傳送等。 操作數(shù)指出參與操作或運(yùn)算的對(duì)象,也指出結(jié)果存放的位置。如CPU的寄存器、存儲(chǔ)單元等。 CPU不同,對(duì)應(yīng)的機(jī)器指令也不同。 一條機(jī)器指令控制計(jì)算機(jī)完成一個(gè)基本操作。 2.機(jī)器語言

2、 機(jī)器語言是用二進(jìn)制編碼的機(jī)器指令的集合及一組使用機(jī)器指令的規(guī)則; 用機(jī)器語言編寫的程序是計(jì)算機(jī)惟一能夠直接識(shí)別并執(zhí)行的程序,而用其他語言編寫的程序必須經(jīng)過翻譯才能變換成機(jī)器語言程序,所以,機(jī)器語言程序被稱為目標(biāo)程序。 為了閱讀方便,常用16進(jìn)制或8進(jìn)制形式表示二進(jìn)制編碼例:Intel8086指令寫兩數(shù)相加的程序片斷。具體是將偏移2200H存儲(chǔ)單元中的數(shù)與偏移2201H存儲(chǔ)單元中的數(shù)相加,結(jié)果存入偏移2202H存儲(chǔ)單元中。(16進(jìn)制形式表示) A0 00 20 02 06 01 20 A2 02 203.機(jī)器語言的特點(diǎn): 編程難度大,調(diào)試?yán)щy 可讀性、可移植性、通用性差1.1.2 匯編語言1.

3、匯編格式指令: 為了克服機(jī)器語言的缺點(diǎn),人們采用便于記憶、并能描述指令功能的符號(hào)來表示機(jī)器指令的操作碼。這些符號(hào)被稱為指令助記符。 用指令助記符、地址符號(hào)等符號(hào)表示的指令稱為匯編格式指令2.匯編語言: 匯編語言是匯編格式指令、偽指令的集合及其表示、使用這些指令的一組規(guī)則。 用匯編語言編寫的程序稱為匯編源程序。 例如:將前例的程序?qū)懗蓞R編語言程序?yàn)椋?MOV AL, VAR1 ; 或 mov al, 2000H ADD AL, VAR2 ;或 add al, 2001H MOV VAR3, AL ;或 mov 2002H, al3.匯編程序: 匯編語言是一種符號(hào)語言,比機(jī)器語言容易理解和掌握,也

4、容易調(diào)試和維護(hù)。但是,匯編語言源程序要翻譯成機(jī)器語言程序才可以由計(jì)算機(jī)執(zhí)行。這個(gè)翻譯的過程稱為“匯編”,這種把匯編源程序翻譯成目標(biāo)程序的語言加工程序稱為匯編程序。 匯編過程示意圖 匯編程序匯編語言源程序匯編目標(biāo)程序1.1.3 高級(jí)語言 匯編語言雖然較機(jī)器語言直觀,但仍然煩瑣難懂。于是人們研制出了高級(jí)程序設(shè)計(jì)語言。高級(jí)程序設(shè)計(jì)語言接近于人類自然語言的語法習(xí)慣,與計(jì)算機(jī)硬件無關(guān),易被用戶掌握和使用。目前廣泛應(yīng)用的高級(jí)語言有多種,如BASIC、FORTRAN、PASCAL、C、C+等等。1.1.4 匯編語言的特點(diǎn)(1)匯編語言與處理器密切相關(guān)(2)匯編語言程序效率高。 運(yùn)行速度快時(shí)間 目標(biāo)程序短空間

5、(3)編寫匯編語言源程序比編寫高級(jí)語言源程序煩瑣 匯編語言是面向機(jī)器的語言 高級(jí)語言是面向過程或面向目標(biāo)、對(duì)象的語言(4)調(diào)試?yán)щy 匯編語言的主要應(yīng)用場合:(1)對(duì)軟件的執(zhí)行時(shí)間和存儲(chǔ)容量有較高要求的場合。如系統(tǒng)程序的核心,智能化儀器儀表的控制系統(tǒng),實(shí)施控制系統(tǒng)等。(2)程序與計(jì)算機(jī)硬件密切相關(guān),程序直接控制硬件的場合。例如設(shè)備驅(qū)動(dòng)程序。 (3)需提高大型軟件性能的場合。執(zhí)行頻率較高的子程序。 (4)沒有合適的高級(jí)語言的場合。 下面是兩個(gè)小例子,例1是用高級(jí)語言VC+編寫的,例2是用匯編語言編寫的。它們完成相同的功能,即把a(bǔ)、b的內(nèi)容相加賦給c,并在屏幕上顯示出來。 例1:編譯后的目標(biāo)文件達(dá)到

6、3.59KB#include stdafx.h #include stdio.h int main(int argc, char* argv) int a,b,c; a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; 例2:data segmenta db ?b db ?c db ?string db c=$data endscode segmentmain proc far assume cs:code, ds:data, es:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov

7、es,ax mov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21h mov dl,0dh int 21h retmain endpcode ends end start匯編后的目標(biāo)文件只有208字節(jié)1.2 數(shù)據(jù)表示及轉(zhuǎn)換1.2.1 進(jìn)位計(jì)數(shù)制及轉(zhuǎn)換1.2.2 數(shù)值數(shù)據(jù)1.2.3 字符數(shù)據(jù)1.2.1 進(jìn)位計(jì)數(shù)制及轉(zhuǎn)換1.數(shù)制數(shù) 值 基數(shù) 數(shù) 碼二進(jìn)制 Binary 2 0,1 八進(jìn)制 Octal

8、 8 0,1,2,3,4,5,6,7 十進(jìn)制 Decimal 10 0,1,2,3,4,5,6,7,8,9 十六進(jìn)制 Hexadecimal 16 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F十進(jìn)制(D):基數(shù)為10,逢十進(jìn)一12.34 = 1101 + 2 100 + 3 10-1 + 4 10-2 二進(jìn)制(B):基數(shù)為2,逢二進(jìn)一1101B = 1 23 + 1 22 + 1 20 = 13十六進(jìn)制(H):基數(shù)為16,逢十六進(jìn)一9187H= 9 163 + 1 162 + 8 161 + 7 160八進(jìn)制(0):基數(shù)為8,逢八進(jìn)一 2167O=2831826817802

9、. 數(shù)制之間的轉(zhuǎn)換二進(jìn)制 十進(jìn)制 1011B = 11D (1)降冪法 例: 27D = ? B 27 11 3 3 1 - - - - - 16 8 4 2 1 1 1 0 1 1 27D = 11011B (2)除法例:117D=?B 商 余數(shù) 117/2 =581 58/2 =290 29/2 =141 14/2 =7.0 7/2 =31 3/2 =11 1/2 =0.1 117D=1110101B二進(jìn)制 十六進(jìn)制 0011 0101 1011 1111B 3 5 B F 0011,0101,1011,1111B = 35BFH A 1 9 C 1010 0001 1001 1100 A

10、19CH = 1010,0001,1001,1100B十六進(jìn)制 十進(jìn)制 BF3CH = 11163 + 15162 + 3161 + 12160 降冪法 例: 399D = ? H 399 143 15 - - - 256 16 1 1 8 F 399D = 18FH3. 運(yùn)算算術(shù)運(yùn)算二進(jìn)制 加法規(guī)則 乘法規(guī)則 0+0=0 00=0 0+1=1 01=0 1+0=1 10=0 1+1=0 (進(jìn)位1) 11=1十六進(jìn)制 0 5 C 3 H 3 D 2 5 H + 3 D 2 5 H - 0 5 C 3 H 4 2 E 8 H 3 7 6 2 H1.3 計(jì)算機(jī)中數(shù)的表示1.3.1 數(shù)值數(shù)據(jù) 數(shù)值數(shù)

11、據(jù)分為有符號(hào)數(shù)和無符號(hào)數(shù)。無符號(hào)數(shù)最高位表示數(shù)值,而有符號(hào)數(shù)最高位表示符號(hào)。有符號(hào)數(shù)有不同的編碼方式,常用的是補(bǔ)碼。1. 原碼 最高位表示符號(hào)(正數(shù)用0,負(fù)數(shù)用1),其他位表示數(shù)值位,稱為有符號(hào)數(shù)的原碼表示法。 【例1.1】有符號(hào)數(shù)的原碼表示。X=45=00101101B X原=00101101BX=-45, X原=10101101B 原碼表示簡單易懂,但若是兩個(gè)異號(hào)數(shù)相加(或兩個(gè)同號(hào)數(shù)相減),就要做減法。為了把減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算就引進(jìn)了反碼和補(bǔ)碼。. 反碼 正數(shù)的反碼與原碼相同,符號(hào)位用0表示,數(shù)值位值不變。負(fù)數(shù)的反碼符號(hào)位用1表示, 數(shù)值位為原碼數(shù)值位按位取反形成,即0變1、1變0?!?/p>

12、例1.2】有符號(hào)數(shù)的反碼表示。X= 45=00101101B, X反= 00101101BY= -45, Y反= 11010010B3. 補(bǔ)碼 正數(shù)的補(bǔ)碼與原碼相同,即符號(hào)位用0表示,數(shù)值位值不變。負(fù)數(shù)的補(bǔ)碼為反碼加1形成?!纠?.3】有符號(hào)數(shù)的補(bǔ)碼表示。X= 45= 00101101B X補(bǔ)=00101101BY= -45 Y補(bǔ)=11010011B4. 符號(hào)擴(kuò)展 在數(shù)據(jù)處理時(shí),有時(shí)需要把8位二進(jìn)制數(shù)擴(kuò)展成16位二進(jìn)制數(shù),當(dāng)要擴(kuò)展的數(shù)是無符號(hào)數(shù)時(shí),可在最高位前擴(kuò)展8個(gè)0。如果要擴(kuò)展的數(shù)是補(bǔ)碼形式的有符號(hào)數(shù),那么,就要進(jìn)行符號(hào)位的擴(kuò)展,符號(hào)擴(kuò)展后,其結(jié)果仍是該數(shù)的補(bǔ)碼?!纠?.4】符號(hào)擴(kuò)展表示。

13、21的8位二進(jìn)制補(bǔ)碼為:00010101 符號(hào)擴(kuò)展后21的16位二進(jìn)制補(bǔ)碼為: 0000000000010101。00010101和0000000000010101都是21的補(bǔ)碼。5. 數(shù)據(jù)的表示范圍和大小n位二進(jìn)制數(shù)能夠表示的無符號(hào)整數(shù)的范圍是: 0 X 2n 1例如8位無符號(hào)數(shù)的范圍為0255 16位無符號(hào)數(shù)的范圍為065535n位二進(jìn)制數(shù)能夠表示的有符號(hào)整數(shù)的范圍是: -2n-1 X +2n-1 1例如8位帶符號(hào)數(shù)的范圍為-128+127 16位帶符號(hào)數(shù)的范圍為-32568+327676十六進(jìn)制表示 由于二進(jìn)制數(shù)的基數(shù)太小,書寫和閱讀都不方便.而十六進(jìn)制的基數(shù)1624,這樣二進(jìn)制數(shù)與十六

14、進(jìn)制之間能方便地轉(zhuǎn)換。因此,習(xí)慣把二進(jìn)制數(shù)改寫成十六進(jìn)制數(shù),在匯編語言程序設(shè)計(jì)時(shí)尤其如此。 在書寫時(shí),為了區(qū)別于十六進(jìn)制和二進(jìn)制數(shù),通常在十六進(jìn)制數(shù)后加字母H。 1.3.2 字符數(shù)據(jù)1ASCII碼2BCD碼1ASCII碼 標(biāo)準(zhǔn)ASCII碼用7位二進(jìn)制數(shù)編碼,共有128個(gè)。 計(jì)算機(jī)存儲(chǔ)器基本單位為8位,ASCII碼的最高位通常為0,通信時(shí),最高位用作奇偶校驗(yàn)位。 ASCII碼表中的前32個(gè)和最后1個(gè)編碼是不能顯示的控制字符,用于表示某種操作。 ASCII碼表中20H后的94個(gè)編碼是可顯示和打印的字符,其中包括數(shù)碼0-9,英文字母,標(biāo)點(diǎn)符號(hào)等。 2BCD碼 雖然二進(jìn)制數(shù)實(shí)現(xiàn)容易,但不符合人們的使用習(xí)慣,且書寫閱讀不方便,所以在計(jì)算機(jī)輸入輸出時(shí)通常還是采用十進(jìn)制來表示數(shù),這就需要實(shí)現(xiàn)十進(jìn)制與二進(jìn)制間的轉(zhuǎn)換。為了轉(zhuǎn)換方便,常采用二進(jìn)制編碼的十進(jìn)制,簡稱為BCD碼。 BCD碼就是用4位二進(jìn)制數(shù)表示1位十進(jìn)制整數(shù)。表示的方法有多種,常用的是8421BCD碼,它的表示規(guī)律如表1.1所示。 表1.1 十進(jìn)制數(shù)字的8421BCD碼十進(jìn)制數(shù)字8421BCD碼十進(jìn)制數(shù)字8421BCD碼000005010110001601102001070111300118100040100910011.4 邏輯運(yùn)算“非”運(yùn)算(NOT) A A 0 1 1 0“與”運(yùn)算(AND) A B AB 0 0 0 0

溫馨提示

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