匯編語言第一章預(yù)備知識(shí)_第1頁
匯編語言第一章預(yù)備知識(shí)_第2頁
匯編語言第一章預(yù)備知識(shí)_第3頁
匯編語言第一章預(yù)備知識(shí)_第4頁
匯編語言第一章預(yù)備知識(shí)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一章預(yù)備知識(shí)匯編語言是面向機(jī)器的低級(jí)語言:和其他計(jì)算機(jī)語言相比,能夠充分利用計(jì)算機(jī)硬件特性;隨機(jī) 器的不同而不同。學(xué)習(xí)匯編語言必須做到:了解特定機(jī)器的硬件;了解其數(shù)據(jù)類型的表示方法;了解其指 令系統(tǒng)等。本章的內(nèi)容包括:什么是匯編語言;匯編源程序舉例;匯編和調(diào)試過程;寄存器組1.1機(jī)器語言與匯編語言人們用計(jì)算機(jī)語言操縱計(jì)算機(jī),和計(jì)算機(jī)交流信息。一般來說, 計(jì)算機(jī)語言可以分為以下幾類:低級(jí)語言是面向機(jī)器的,為特定機(jī)器提出的;高級(jí)語言是面相人的,接近于自然語言,為了方便人們使用提出的。,針對(duì)特定機(jī)器的機(jī)器語言,低級(jí)語言( 8031匯編語言U匯編語言 Z Z80匯編語言 8086匯編語言BASIC語

2、言FORTRAN 語言C語言計(jì)算機(jī)語言 高級(jí)語言 5四代語言(VB、PB、ASP等)機(jī)器語言機(jī)器指令:能夠被計(jì)算機(jī)識(shí)別,并能直接加以執(zhí)行的語句。機(jī)器語言:由機(jī)器指令構(gòu)成的集合。機(jī)器指令也叫做硬指令,不同類型的CPUTB有自己特有的、一 定數(shù)量的基本指令,組成其特有的機(jī)器語言。機(jī)器指令用二進(jìn)制代碼來表示,這樣才能夠被計(jì)算機(jī)識(shí)別并直 接執(zhí)行。機(jī)器指令的一般形式為:操作碼 地址碼例如:1011 1000 操作碼:1011, MOV0111 1111 目的操作數(shù):1000, AX0000 0000 源操作數(shù):0000 0000 0111 1111 立即數(shù)I完成操作:MOV AX, 7FH; 7FH A

3、X操作碼指出了運(yùn)算的種類,如數(shù)據(jù)傳送、加減運(yùn)算等。地址碼指出了參與運(yùn)算的操作數(shù)和運(yùn)算結(jié)果的存放位置。用機(jī)器語言編程,就意味著要用二進(jìn)制數(shù)0和1編寫程序。這 樣做效率很低,而且容易出錯(cuò)。但為了能夠充分利用硬件特性,在 一些時(shí)候仍然需要用低級(jí)語言編程,因此人們想辦法對(duì)機(jī)器語言進(jìn) 行改進(jìn),提出了匯編語言。此后很少直接使用機(jī)器語言了。匯編語言從本質(zhì)上看,匯編語言是一種符號(hào)化的機(jī)器語言:用助記符表示機(jī)器指令的操作碼;用變量代替操作數(shù)的存放地址;用在語句前加一個(gè)標(biāo)號(hào),來代表該指令的存放地址。匯編語言的主要操作與機(jī)器指令一一對(duì)應(yīng),是一種用符號(hào)書寫 的(不再是二進(jìn)制代碼)、并遵循一定語法規(guī)則的計(jì)算機(jī)語言。例

4、如:MOV AX, 7FHMOV BX, 1234HADD AX, BX匯編語言是為了方便用戶使用而設(shè)計(jì)的一種符號(hào)語言, 并不能 直接被計(jì)算機(jī)識(shí)別,必須將匯編語言程序翻譯成機(jī)器語言程序 (也 叫目標(biāo)程序),才能由計(jì)算機(jī)所執(zhí)行。翻譯過程的圖形表示:匯編程序不同于匯編語言程序。匯編語言程序是用匯編語言寫 的程序,匯編程序是翻譯匯編語言程序的加工程序。匯編程序可分為:ASI小匯編程序,占有較小的存貯區(qū),但功能較弱,沒有宏功能。MAS宏匯編程序,需要較大的存貯區(qū),但功能強(qiáng)大,具有 宏能力。這門課使用的是宏匯編程序。宏,是指用一個(gè)宏指令名字代替程序中重復(fù)出現(xiàn)的一組語句,在其它的地方, 可以用宏指令名字及

5、不同的參數(shù)來調(diào)用。宏的功能類似于子函數(shù),但實(shí)現(xiàn)方式不同。此外,匯編語言還必須指出:程序從什么地方開始、什么時(shí)候結(jié)束、數(shù)據(jù)放在哪里、數(shù)據(jù)類型是什么、臨時(shí)存貯區(qū)等,這需要一組另外的指令指示 MASM 工作,這種指令叫做偽指令。為什么要學(xué)習(xí)匯編語言?匯編程序產(chǎn)生的目標(biāo)程序簡(jiǎn)短, 占用的存貯空間小,執(zhí)行速度快,適合于編寫過程控制、多媒體接口、通訊程序。有些無法用高級(jí)語言實(shí)現(xiàn)的操作,可以由匯編完成。匯編源程序舉例舉例完整源程序?yàn)榱藢?duì)匯編語言有具體的理解,下面編寫一個(gè)簡(jiǎn)單的程序:.386;堆棧段STACK SEGMENT USE16 STACK ;段名和組合類型DB 200 DUP(0);堆棧的大小為 2

6、00 個(gè)字STACK ENDS;數(shù)據(jù)段DATA定DATA;代碼段CODEES:DATASTART:SEGMENT USE16SUM DW ?; 段為 16 位段;SUM 為字變量,初值不NEXT:ENDSSEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATA,MOV AX, DATAMOV DS, AXMOV CX, 50MOV AX, 0MOV BX, 1ADD AX, BXINC BXINC BXDEC CX;數(shù)據(jù)段首址送DS;循環(huán)計(jì)數(shù)器置初值;累加器置初值;1 7 BX;(AX)+(BX) -AX;(BX)+2 - BX;(CX)-1 -CXJNE

7、NEXT ;(CX)?轉(zhuǎn) NEXT MOV SUM, AX ;(CX)=0 累力口結(jié)果-SUM MOV AH, 4CHINT 21H;返回 DOSCODE ENDSEND START;源程序結(jié)束語句。程序運(yùn)行時(shí),啟動(dòng)地址為 START分段在該例中,一共定義了三個(gè)段:堆棧段、數(shù)據(jù)段和代碼段。.386;堆棧段STACK SEGMENT USE16 STACK STACK ENDS;數(shù)據(jù)段DATA SEGMENT USE16 DATA ENDS;代碼段CODE SEGMENT USE16ASSUME CS:CODE, SS:STACK, DS:DATA, ES:DATASTART: MOV AX ,

8、 DATAMOV DS, AX MOV AH , 4CHINT 21HCODE ENDSEND START語句該例中的源程序由一系列語句組成。語句的一般格式為:名字 操作符 操作數(shù)或地址;注釋 操作符可分為 3 類:指令偽指令宏操作數(shù)也可分為 3 類:數(shù)值寄存器內(nèi)存常用指令:MOV AX, 0ADD AX, BXINC AXDEC CX等匯編和調(diào)試過程一、 匯編過程必備軟件MASM.EXELINK.EXETD.EXE其他:文本編輯器、 DOSBOX 等命令MASM DEMO.ASM匯編 DEMO.ASM ,應(yīng)該生成MASM.OBJLINK DEMO.OBJ連接DEMO.OBJ ,應(yīng)該生成 MA

9、SM.EXETD DEMO.EXE調(diào)試 DEMO.EXE調(diào)試程序Turbo Debugger的使用1.如圖,TD的界面可分為:菜單代碼操作區(qū) 數(shù)據(jù)操作區(qū)寄存器操作區(qū)標(biāo)記寄存器操作區(qū) 堆棧段操作區(qū)標(biāo)記有:當(dāng)前指令標(biāo)記當(dāng)前棧頂標(biāo)記TD 的主要操作單步執(zhí)行:F7, F8設(shè)置(取消)斷點(diǎn): F2直接執(zhí)行:F9查看數(shù)據(jù)區(qū)查看用戶界面修改數(shù)據(jù)、指令、寄存器內(nèi)容1.4 Intel 8086 微處理器簡(jiǎn)介匯編語言是一種面向機(jī)器的低級(jí)語言,要學(xué)好它,必須對(duì)計(jì)算機(jī)硬件結(jié)構(gòu)有一個(gè)初步了解。微型計(jì)算機(jī)的組成微型計(jì)算機(jī)主要由微處理器( CPU) 、主存貯器( MM ) 、外部設(shè)備及互連部件組成。如下圖所示:存貯器:存放

10、程序以及數(shù)據(jù)、信息、中間結(jié)果外設(shè):I/O設(shè)備和大容量存貯器。I/O設(shè)備包括顯示器、打印機(jī)、 鍵盤等。Intel 80 x86內(nèi)部結(jié)構(gòu)個(gè)人電腦的發(fā)展,經(jīng)過了 8086、80186、8028& 80386等幾代 產(chǎn)品,Intel 80 x86是1985年推出的32位處理器,按功能可分為執(zhí) 行部件(EU)和總線接口部件(BIU)。其中運(yùn)算器執(zhí)行所有的算 術(shù)和邏輯運(yùn)算指令;控制器負(fù)責(zé)計(jì)算機(jī)的控制工作(如取出指令、 發(fā)出各種控制命令)。其內(nèi)部結(jié)構(gòu)如下所示:分頁部件執(zhí)行部件寄存器組標(biāo)志寄存器算避部件總線接口部件*主存*外部設(shè)備各部分的功能:.總線接口部件:是CPU與整個(gè)計(jì)算機(jī)系統(tǒng)之間的高速接口功能:接受所

11、有的總線操作請(qǐng)求,并按優(yōu)先權(quán)進(jìn)行選擇,最大限度地利用本身的資源為這些請(qǐng)求服務(wù)。.執(zhí)行部件:寄存器組、標(biāo)志寄存器、算邏部件、控制部件等組成功能:從譯碼指令隊(duì)列中取出指令并且執(zhí)行(1)數(shù)據(jù)寄存器組(EAX, EBX, ECX, EDX)EAX (累加器)AccumulatorEBX (基址寄存器)BaseECX (計(jì)數(shù)寄存器)CountEDX (數(shù)據(jù)寄存器)Data作用:用來保存操作數(shù)、運(yùn)算結(jié)果或作指示器、變址寄存器,減少存取操作數(shù)所需要的訪問總線和主存儲(chǔ)器的時(shí)間,加快運(yùn)行速度。EAXAHAL累加器(AX)EBXBHBL基址寄存器(BX)ECXCHCL計(jì)數(shù)寄存器(CX)EDXDHDL數(shù)據(jù)寄存器(D

12、X)ESISI源變址寄存器EDIDI目的變址存存器EBPBP堆?;访┐嫫鱁SPSP堆棧指示器3116158 70汪息:它們既可作32位、16位寄存器,也可作8位寄存器使用16位和8位的寄存器不能作指示器或變址寄存器。(2)指示器變址寄存器組(ESI、EDI、ESP、EBP)作用:一般用來存放操作數(shù)的偏移地址,用作指示器或變址寄 存器。ESP (Stack Pointe”稱為堆棧指示器,存放的是當(dāng)前堆 棧段中棧頂?shù)钠频刂?;EBP(Base Pointer)為對(duì)堆棧操作的基址寄存器;ESI(Source Index),稱為源變址寄址器;字符串指令源操 作數(shù)的指示器;EDI(Destinatio

13、n Index),稱為目的變址寄存器;字符串指 令目的操作數(shù)的指示器.指令預(yù)取部件和指令譯碼部件指令預(yù)取部件:通過總線接口部件,把將要執(zhí)行的指令從主存 中取出,送入指令排隊(duì)機(jī)構(gòu)中排隊(duì)。指令譯碼部件:從指令預(yù)取部件中讀出指令并譯碼,再送入譯 碼指令隊(duì)列排隊(duì)供執(zhí)行部件使用。IP3116 150指令指示器:它總是保存著下一條將要被CPU執(zhí)行的指令的偏 移地址,其值為該指令到所在段首址的字節(jié)距離。.分段部件和分頁部件(1)使用分段部件和分頁部件實(shí)現(xiàn)虛擬存儲(chǔ)空間映射到物理存 儲(chǔ)空間程序員使用二維地址,即“段地址:段內(nèi)偏移地址”分段部件段地址:段內(nèi)偏移地址 一維的線性的地址分頁部件虛擬的線性的地址主存儲(chǔ)器

14、的物理地址(2)段寄存器用來保存段首地址代碼段寄存器CS堆棧段寄存器SS數(shù)據(jù)段寄存器DS附加段寄存器ES附加段寄存器FS附加段寄存器GS.指令執(zhí)行過程:(1)指令預(yù)取部件和指令譯碼部件由EIP取得指令的偏移地址EIP增量,形成下一條指令的地址(2)分段部件和分頁部件由分段部件和分頁部件,將“ CS : EIP”轉(zhuǎn)換為指令的物理地(3)總線接口部件從主存中取指令送到預(yù)取指令隊(duì)列4) CPU 按序從預(yù)取指令隊(duì)列中取出指令送到指令譯碼部件。5) 指令譯碼部件譯碼,執(zhí)行部件執(zhí)行指令;6) 執(zhí)行過程中若需要取主存操作數(shù),從指令中取得操作數(shù)偏移地址7) 分段部件和分頁部件由分段部件和分頁部件,將“段首址: 偏移地址”轉(zhuǎn)換為操作數(shù)的物理地址) 總線接口部件從主存中取數(shù)據(jù)送到執(zhí)行部件80 x86 的三種工作方式實(shí)方式(實(shí)際地址)操作相當(dāng)于一個(gè)可進(jìn)行32 位快速運(yùn)算的8

溫馨提示

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