




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
匯編語言與接口技術(shù)第一章預(yù)備篇-匯編預(yù)備知識一、匯編語言的概念匯編語言是介于計算機(jī)能直接理解的機(jī)器語言與用戶容易理解的高級語言之間的一種低級語言。匯編語言除了有與代碼指令一一對應(yīng)的符號指令外,還增加了專用于定義變量,常量,符號,過程,分配存儲空間,定位程序起始地址等一系列指令稱之為偽指令的符號指令。低級語言: 機(jī)器語言〔指令系統(tǒng)、操作碼+操作數(shù)〕 匯編語言匯編語言實際上是機(jī)器語言的一個助記版本,它有一套指令系統(tǒng),其中的匯編指令和機(jī)器指令是一一對應(yīng)的。和機(jī)器指令不同,匯編指令是一些助記符〔通常是英文單詞的縮寫〕,而不是二進(jìn)制代碼,因此記憶這樣的指令非常容易。匯編語言是一種針對機(jī)器指令的語言,但是使用它編制的程序只是一些文本信息,并不能直接在CPU上運(yùn)行。因此必須要將匯編語言程序〔使用匯編語言編制的源程序〕翻譯成可執(zhí)行程序〔機(jī)器指令組成的程序〕,這個翻譯過程叫做匯編。指令、偽指令以及程序設(shè)計規(guī)那么構(gòu)成匯編語言系統(tǒng)。二、匯編語言的特點
相對高級語言而言,匯編每一行都是CPU執(zhí)行的一條指令〔可執(zhí)行程序最根本的組成元素〕,程序處于底層,緊密貼合硬件,更能有效地訪問、控制計算機(jī)的各種硬件資源,如磁盤、存儲器、CPU、I/O端口等;由于是使用指令直接進(jìn)行程序編寫,執(zhí)行效率比高級語言編譯而得的程序高〔占用資源少、執(zhí)行速度快〕C語言實現(xiàn)c=a+b,并在屏幕上顯示出結(jié)果
#include"stdafx.h"#include"stdio.h"intmain(intargc,char*argv[]){inta,b,c;a=3; b=2; c=a+b; printf(“c=%d\n",c); return0;}編譯后的目標(biāo)文件到達(dá)3.59KB匯編語言程序:c=a+bdatasegmentadb?bdb?cdb?stringdb'c=$'dataendscodesegmentmainprocfarassumecs:code,ds:data,es:datastart:pushdssubax,axpushax
movax,datamovds,axmoves,ax
mova,3movb,2moval,aaddal,bmovc,alleadx,stringmovah,09int21haddc,30hmovdl,cmovah,2int21hmovdl,0ahint21hmovdl,0dhint21hretmainendpcodeendsendstart匯編后的目標(biāo)文件只有208字節(jié)三、匯編語言的應(yīng)用范圍通過和高級語言的比較可以理解,匯編語言針對的應(yīng)用主要是硬件的控制和核心算法的編制。適合使用匯編語言的場合如下:(1)如果實際應(yīng)用中需要設(shè)計硬件接口,那么必須使用匯編語言對接口進(jìn)行調(diào)試,檢查硬件接口設(shè)計是否正確;調(diào)試結(jié)束后還需要編制完整的驅(qū)動程序,使之提供給上層軟件的系統(tǒng)調(diào)用,這通常也是使用匯編語言來完成的。(2)如果實際應(yīng)用中需要使用已有硬件的特殊功能,這些特殊功能是高級語言中沒有提供的,那么可以使用匯編語言程序直接控制該硬件。例如有些應(yīng)用中需要使用MMX指令加速某些數(shù)字圖象算法,那么就需要使用匯編語言來實現(xiàn)。(3)一個高級語言編制的應(yīng)用軟件中可能包含了成千上萬行高級語言代碼,但是并不是每行代碼都是經(jīng)常被執(zhí)行的,經(jīng)常被循環(huán)執(zhí)行的代碼往往只占總代碼數(shù)量的一小局部,這局部代碼被稱為核心代碼。在應(yīng)用軟件最終產(chǎn)品化的時候,核心代碼往往改用匯編語言實現(xiàn),以提高其運(yùn)行效率。核心代碼的效率提高就代表著這個軟件的整體執(zhí)行效率提高了。四、為什么學(xué)習(xí)匯編語言
從課程〔知識〕的角度涉及到計算機(jī)軟硬件的最根底的局部,它是大學(xué)學(xué)習(xí)階段深入計算機(jī)系統(tǒng)底層的一門課程,是進(jìn)入計算機(jī)底層世界的門戶,作為理解多門后期課程的根底,它起著至關(guān)重要的作用。后期課程:操作系統(tǒng)、接口與外部設(shè)備、嵌入式系統(tǒng)、計算機(jī)體系結(jié)構(gòu)等指令系統(tǒng)層微體系結(jié)構(gòu)層數(shù)字邏輯層面向問題的語言層匯編語言層操作系統(tǒng)層從編程〔技能〕角度看1〕匯編語言〔除機(jī)器語言外〕是計算機(jī)語言中最接近底層硬件的語言,直接用于控制硬件,是編寫硬件驅(qū)動程序、調(diào)試硬件接口必不可少的工具。2〕由于直接使用指令進(jìn)行程序設(shè)計,它的執(zhí)行效率很高,速度比高級語言程序快,占用的空間比高級語言程序小,是通常用作編寫核心算法的語言。五、如何學(xué)習(xí)匯編語言1、了解以X86系列的PC機(jī)的根本結(jié)構(gòu)〔編程結(jié)構(gòu)〕2、掌握X86系列微處理器的指令系統(tǒng)及尋址方式3、學(xué)習(xí)記憶匯編語言的語法4、掌握程序設(shè)計的根本方法5、理論聯(lián)系實踐以動手實踐帶動學(xué)習(xí)記憶作業(yè)、實驗〔多看程序,多寫程序〕編程:模仿→改造→創(chuàng)新本門課程的教學(xué)目的和要求(1)能夠閱讀匯編語言程序,并能夠正確解釋其功能(2)能夠編寫一些完整的、實用的匯編語言程序(3)能夠正確使用匯編工具和調(diào)試工具,使編寫的匯編語言程序能在計算機(jī)上正確運(yùn)行(4)通過對匯編語言的學(xué)習(xí),逐步了解計算機(jī)系統(tǒng)的底層工作原理,并逐步建立一個硬件系統(tǒng)的根本框架參考資料:1、IBM-PC匯編語言程序設(shè)計(第2版)
沈美明溫冬嬋清華大學(xué)出版社
2、IBM-PC匯編語言程序設(shè)計例題習(xí)題集 沈美明溫冬嬋清華大學(xué)出版社教學(xué)內(nèi)容和學(xué)時分配授課方式:講課(36學(xué)時)+實驗(12學(xué)時)考核方式(考試課):
平時成績(30%)+考試成績(70%)六、數(shù)據(jù)的表示和類型比方:1011B=111011O=5217777O=40951011H=4113數(shù)的二進(jìn)制表示B、八進(jìn)制表示O、十進(jìn)制表示D、十六進(jìn)制表示H有符號數(shù)的補(bǔ)碼表示正數(shù)最高位為0,負(fù)數(shù)最高位為1。正數(shù)的補(bǔ)碼形式不變,負(fù)數(shù)的補(bǔ)碼形式由對應(yīng)的正數(shù)每一個二進(jìn)制位變反,最后結(jié)果加1。3的8位二進(jìn)制補(bǔ)碼:00000011-3的8位二進(jìn)制補(bǔ)碼:11111101BCD碼是用4位二進(jìn)制表示1位十進(jìn)制。比方:668的BCD碼是:011001101000數(shù)據(jù)根本類型:字節(jié)(byte),字(word),雙字(DW),四字,十字節(jié)。ASCII碼——美國信息交換標(biāo)準(zhǔn)碼例:‘A’41H‘a(chǎn)’61H‘1’31H換行0AH回車0DH空格20H七、計算機(jī)系統(tǒng)概述計算機(jī)系統(tǒng)包括硬件和軟件兩局部硬件:CPU、存儲器、總線控制器、輸入設(shè)備和輸出設(shè)備軟件:為了運(yùn)行管理和維護(hù)而編制的各種程序的總和軟件分成系統(tǒng)軟件和用戶軟件兩大類。1、計算機(jī)硬件系統(tǒng)
存儲器中央處理器總線控制
CPU邏輯大容量接口存儲器
I/O設(shè)備圖1.1計算機(jī)結(jié)構(gòu)圖存儲器是計算機(jī)的記憶體。人們編寫的程序〔指令序列組成〕就存放在此,也可存放程序中所用的數(shù)據(jù),信息和中間結(jié)果。問題:馮.諾依曼是什么人,提出什么計算機(jī)方案?PC機(jī)內(nèi)有1M字節(jié)隨機(jī)存取的存儲器RAM及40K字節(jié)ROMBASIC的解釋程序、根本輸入/出系統(tǒng)軟件BIOS中央處理機(jī)包括運(yùn)算器和控制器兩局部。運(yùn)算器執(zhí)行所有的算術(shù)、邏輯運(yùn)算指令??刂破髂敲簇?fù)責(zé)中央處理機(jī)內(nèi)全部的控制動作,它協(xié)助運(yùn)算器完成各種運(yùn)算。I/O子系統(tǒng)包括I/O設(shè)備〔負(fù)責(zé)與計算機(jī)外部世界通信用的輸入/出設(shè)備:終端、鍵盤、打印機(jī)等〕和大容量存儲器兩類〔大容量存儲器指可存儲大量信息的外存如磁盤、磁帶、光盤等〕。機(jī)器內(nèi)部的存儲器稱為內(nèi)存——容量有限,但速度快。除必要的系統(tǒng)程序外,一般程序〔包括數(shù)據(jù)〕只存放在外存中,只有當(dāng)運(yùn)行時,才將它從外存?zhèn)鬟f到內(nèi)存的某個區(qū)域,由CPU執(zhí)行。2、中央處理器CPU的任務(wù)是執(zhí)行存放在存儲器里的指令序列IBMPC機(jī)中的CPU由一個微處理芯片8088組成,主要性能:系統(tǒng)時鐘4.77MHZ、根本指令99條、機(jī)內(nèi)字長16位,數(shù)據(jù)線8根,地址線20根〔1M字節(jié)的尋址能力〕平均運(yùn)算速度0.65Mps(兆次/秒〕系統(tǒng)總線16位ALU的數(shù)據(jù)總線
123458位數(shù)據(jù)總線20位地aBus
ALUPSW(F)1.2.3.4.5.
圖1.28088CPU內(nèi)部通訊存放器是I/O,MEM與EU部件交換數(shù)據(jù)的暫存存放器。BIU負(fù)責(zé)8088CPU與存貯器和I/O設(shè)備之間的信息傳遞:BIU從內(nèi)存指示地址取出指令,并送指令流字節(jié)隊列去排隊。執(zhí)行指令時,所需的存貯器操作數(shù)也由BIU從內(nèi)存指定單元取出,傳送給Eu去執(zhí)行四個段存放器CS,DS,SS和ES,指令指針I(yè)P以及地址加法器產(chǎn)生存取數(shù)據(jù)或指令的20位地址,指令流字節(jié)隊列存放取出來的指令。8088存放器組通用存放器組〔數(shù)據(jù)存放器組〕:AX,BX,CX,DX用來暫時存放計算過程中所用到的操作數(shù),結(jié)果或信息。它們都可以字〔16位〕或字節(jié)〔8位〕形式訪問,比方:AX,AH,AL,BX,CX,DX,DH,DL。這些都是通用存放器又可用于各自的專用存放器。AX:累加器,算術(shù)運(yùn)算的主要存放器;所有的I/O指令都參與外設(shè)傳送信息。BX:在計算存儲器地址時,經(jīng)常用作基址存放器。CX:在循環(huán)〔Loop)和串處理指令中用作隱含的計數(shù)器。DX:一般在做雙子長運(yùn)算時把DX和AX組合在一起存放一個雙字長數(shù),DX放高16位:對某些I/O操作,DX可用來存放I/O的端口地址。指針和變址存放器:SP,BP,SI,DI四個16位存放器。存放16位的操作數(shù);更經(jīng)常的用途是在段內(nèi)尋址時提供偏移地址。使用指針和變址存放器,除減少指令長度外,更重要的作用是:使指令訪問的地址是程序運(yùn)算的結(jié)果。這個是指針或變址存放器與16位通用存放器進(jìn)行算術(shù)和邏輯運(yùn)算得到的。BP,SP:堆棧指針存放器,SP+SS在RAM中建立堆棧,并通過棧頂來存取站中的數(shù)據(jù)。而BP+SS不通過棧頂存取堆棧中某單元的信息。變址存放器SI,DI為變址存放器:它們有自動增量,自動減量的功能,與DS聯(lián)用,確定數(shù)據(jù)段中某一存儲單元的地址,在串處理中,SI,DI作為隱含源變址、目的變址存放器。此時SI與DS聯(lián)用,DI與ES聯(lián)用,到達(dá)在不同段尋址的目的。段存放器:CS:代碼段存放器DS:數(shù)據(jù)段存放器SS:堆棧段存放器ES:附加段存放器16位存放器,用來標(biāo)識當(dāng)前代碼段,數(shù)據(jù)段,堆棧段和附加段。功能:主要是使8088CPU對IBMPC內(nèi)存的不同段進(jìn)行讀寫??刂拼娣牌鱅P和PSWIP——指令指針存放器〔存放代碼段中的偏移地址〕,在程序執(zhí)行過程中,它始終指向下一條指令的首地址,它與CS存放器聯(lián)用取得確定的下一條指令在存儲器中的物理地址,控制器可取得下一條執(zhí)行指令,控制器一旦取得這條指令。就馬上修改IP的內(nèi)容,讓它指向下一條指令的首地址。PSW程序狀態(tài)字存放器〔16位〕由條件標(biāo)志和控制標(biāo)志構(gòu)成。1514131211109876543210條件碼標(biāo)識:條件碼標(biāo)識〔6個〕,用來記錄程序運(yùn)行和狀態(tài)信息。這些信息往往作為條件轉(zhuǎn)移指令的控制條件。OF溢出標(biāo)志OF=0:-128<=B<=127-32768<=W<=+32767;否那么OF=1SF符號標(biāo)志與運(yùn)算結(jié)果的最高位相同ZF零標(biāo)志ZF=1:結(jié)果為0;否那么ZF=0AF輔助進(jìn)位標(biāo)志中間位向高位進(jìn)位或借位時,AF=1;否那么AF=0PF奇偶標(biāo)志操作數(shù)中1的個數(shù)為偶PF=1CF進(jìn)位標(biāo)志CF=1:最高有效位有進(jìn)位注意:解有符號數(shù)的算術(shù)運(yùn)算,必須根據(jù)OF是“1〞還是“0〞決定是否溢出。對于無符號的算術(shù)運(yùn)算,必須根據(jù)CF是“1〞還是“0〞來決定。進(jìn)位和溢出是兩個不同性質(zhì)的標(biāo)志不要混淆確定CF和OF的值:字節(jié)〔-1〕+〔-1〕=-2的有符號數(shù)運(yùn)算11111111+11111111CF=1OF=0←無溢出111111110(+100)+(+100)=20001100100+01100100CF=0011001000OF=1有溢出控制標(biāo)志:DF方向標(biāo)志DF=1(DOWN方向減量)DF=0(UP方向增量)IF中斷標(biāo)志IF=1(CPU響應(yīng)外部中斷請求)STIIF=0(CPU不響應(yīng)外部中斷請求)CLITF追蹤標(biāo)志TF=1〔CPU單步操作〕TF=0(連續(xù)操作)3、存儲器存儲單元的地址和值:計算機(jī)存儲信息的根本單位是位、字節(jié)和字。每位是一個二進(jìn)制數(shù),一位可存儲一個二進(jìn)制數(shù)0或1,每8位組成一個字節(jié),兩個字節(jié)組成一個字。一字節(jié)高位字節(jié)低位字節(jié)一個字在存儲器里以字節(jié)為單位存儲信息,為了正確存放或取得信息,每一個字節(jié)單元給一個存儲器地址。地址從0開始編號,順序的每次加1——無符號的二進(jìn)制數(shù),以十六進(jìn)制方式書寫。16位二進(jìn)制可標(biāo)識多少單元的地址?:216個。那么16位〔一個字長〕可表示的地址范圍有0-655351024=1k=210為討論存儲器容量的根本單位,那么65535個字節(jié)單元的存儲器容量為64k〔210+6=210*26=64*210〕地址編號的范圍〔十六進(jìn)制表示〕0000H-FFFFHx表地址;〔x)表示該單元的內(nèi)容。(0010)=1234H0010H1234H((0010))=(1234)=2F1EH一個存儲單元中存放的信息為該存儲單元的內(nèi)容,字的存入如下圖:低字節(jié)存入低地址0010H0011H〔0010)w=1234H〔0010)b=34H同一個地址既可看作字節(jié)單元的地址,又可作為字單元的地址,視具體情況而定。機(jī)器里訪問存儲器〔要求存數(shù)或取數(shù)〕都是以字為單位進(jìn)行的。即:機(jī)器是以偶地址訪問存儲器的,這樣,對于奇地址的字單元,要取一個字需要訪問二次存儲器。堆棧
IBMPC的堆棧是在內(nèi)存RAM中開辟的一端固定一端活動的存儲空間,活動端為棧頂,固定端為棧底。棧的伸展方向是從高地址到低地址,進(jìn)棧時SP的變化順序SP-2,SP-4,SP-6,…SP-2I,出棧時SP的變化順序SP+2,SP+4,SP+6,…SP+2I作用:中斷,子程序嵌套,遞歸,保存現(xiàn)場,存放中間結(jié)果等。內(nèi)存分段內(nèi)存由RAM和EPROM/ROM構(gòu)成,由于8086/8088有20條地址線,且存儲器是以字節(jié)為單位,故其直接尋址能力可達(dá)1MB〔220字節(jié)〕,而8088CPU內(nèi)部的EU只能進(jìn)行16位運(yùn)算,與地址有關(guān)的存儲器也都是16位,那么如何得到20位地址?涉及到內(nèi)存分段技術(shù)。地址分段的范圍00000H-FFFFFH在編程時,將存儲器劃分成假設(shè)干段,每個段的大小可達(dá)64K〔216〕——段內(nèi)地址可用16位表示。實際可依需要來確定段的大小——64K范圍內(nèi)的任意個字節(jié)數(shù)。可用16位表示段地址,訪問存儲單元時,用段地址+十六位段地址偏移量可得到確定的單元位置?!拔恢猫暭礊槲锢淼刂?。段地址放入段存放器CS,DS,SS,ES物理地址的計算方法為:將段地址后添加4位零,再加上偏移地址值。16X段地址+偏移地址=物理地址16位段地址0000+16位偏移地址————————————20位物理地址一般情況下,物理段在存儲器中的分配是由操作系統(tǒng)負(fù)責(zé)的。邏輯段可以在程序中重新定義,各邏輯段也可以允許重疊。例如:代碼段占8K存儲區(qū)〔2000H〕數(shù)據(jù)段占2K存儲區(qū)〔800H〕堆棧段占256B存儲區(qū)分配如下二種:內(nèi)存
CS0150H64K代碼01500HDS4200HSS1CD0H64K堆棧1CD00HESB000H64K數(shù)據(jù)42000H64K附加B0000H
內(nèi)存
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成功的房地產(chǎn)案例及其背后的秘訣
- 機(jī)械藝術(shù)制圖與cad試題及答案
- 廚師晉級考試題庫及答案
- 教資面試題目及答案詳解
- 12屆藍(lán)橋杯試題及答案
- 貴州在線考試試題及答案
- es6面試題及答案2021
- 朱格拉周期試題及答案
- 中歌舞蹈考試題目及答案
- 醫(yī)學(xué)機(jī)構(gòu)面試題及答案
- 小學(xué)綜合實踐活動四年級下冊全冊教學(xué)設(shè)計上海科技教育出版社
- 人人都是產(chǎn)品經(jīng)理 蘇杰
- 年產(chǎn)5萬噸電石爐窯節(jié)能改造項目環(huán)境影響后評價報告
- 五年級下學(xué)期數(shù)學(xué)第六單元第5課時《單元綜合復(fù)習(xí)》課件(共15張PPT)人教版
- 貪污賄賂犯罪PPT(培訓(xùn))(PPT168頁)課件
- (整理)體適能課程教學(xué)計劃.
- GA∕T 1781-2021 公共安全社會視頻資源安全聯(lián)網(wǎng)設(shè)備技術(shù)要求
- 洛陽市中小學(xué)教師師德師風(fēng)考核內(nèi)容和評分細(xì)則
- 休克的急救護(hù)理課件
- 煙草專賣局(公司)系統(tǒng)績效考核管理辦法(討論稿)
- 項目核算管理辦法(修改)
評論
0/150
提交評論