匯編語言第一章_第1頁
匯編語言第一章_第2頁
匯編語言第一章_第3頁
匯編語言第一章_第4頁
匯編語言第一章_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

我能學(xué)好匯編語言匯編語言程序設(shè)計(jì)·計(jì)算機(jī)與程序·計(jì)算機(jī)中的數(shù)據(jù)·程序設(shè)計(jì)由程序控制計(jì)算機(jī)完成人們想做的工作。由0/1代碼組成的二進(jìn)制數(shù),也可以表示為十六進(jìn)制數(shù)和八進(jìn)制數(shù)。在20世紀(jì)80年代,程序設(shè)計(jì)是最主要、最通用的設(shè)計(jì)方法。預(yù)備知識程序=數(shù)據(jù)結(jié)構(gòu)+算法在編寫一個(gè)程序中,需要對兩個(gè)方面進(jìn)行描述:

(1)對數(shù)據(jù)的描述(數(shù)據(jù)流):

指定數(shù)據(jù)的類型和數(shù)據(jù)的結(jié)構(gòu)。(不同的語言對數(shù)據(jù)的定義不同,我們將學(xué)習(xí)匯編語言的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu))

(2)對操作的描述(控制流):

要指定操作的步驟,既算法。(算法具有通用性,脫離于語言之外,是程序設(shè)計(jì)的靈魂)預(yù)備知識計(jì)算機(jī)算法可以分成兩大類:

數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法。什么是算法(Algorithm)?

就是為了解決一個(gè)特定的問題而采取的確定的、有限的、按照一定次序進(jìn)行的、缺一不可的執(zhí)行步驟。在計(jì)算機(jī)能執(zhí)行的算法就是計(jì)算機(jī)算法。注意:為了有效地利用計(jì)算機(jī)解決實(shí)際問題,在設(shè)計(jì)算法時(shí)不僅要保證計(jì)算機(jī)執(zhí)行算法的正確性,還要考慮算法的質(zhì)量,選擇適合于具體問題的算法。1.1算法例1:猴子吃桃問題。有一堆桃子不知數(shù)目,猴子第一天吃掉一半并多吃了一個(gè),第二天照此方法,吃掉剩下桃子的一半加一個(gè),天天如此,到第十天早上,猴子發(fā)現(xiàn)只剩一只桃子了,問這堆桃子原來有多少個(gè)?算法寫成:(1)A1=1{第10天的桃子數(shù),A1的初始值};

i=9{計(jì)數(shù)器的初值為9};(2)A0=2*(A1+1){計(jì)算當(dāng)天的桃子數(shù)};(3)A1=A0;{將當(dāng)天的桃子數(shù)作為下一次計(jì)算的初值};(4)i=i-1;(5)若i>=1,繼續(xù)循環(huán)執(zhí)行(2);(6)輸出A0的值。其中(2)~(5)是反復(fù)的循環(huán)執(zhí)行。數(shù)學(xué)模型:Ai=2*(ai+1+1)i=9,8,7,…1;1.1算法語句格式:[標(biāo)號]操作符操作數(shù)[;注釋]MOV、ADD、SUB由一個(gè)或多個(gè)組成,由逗號“,”分開。例

MOVAL,BLADDCL,DL也可以在說明的同時(shí)給變量賦初值,例如:MOVAL,0

XORAL,AL注意:(1)組成標(biāo)號的字符:

A~Z,a~z,0~9,?,.@,$,和_(下劃線);演示31(2)標(biāo)號的最大長度為3l(字符個(gè)數(shù))。(3)標(biāo)號的第一個(gè)字符不能是0~9的數(shù)字。(4)機(jī)器指令語句中標(biāo)號必須以冒號結(jié)束,偽指令語句中的標(biāo)號不允許有冒號.聲明例2:輸入三個(gè)數(shù),然后輸出最大的數(shù)。算法可以寫成:(1)輸入A,B,C;(2)若A>B,則A->MAX;若A<B,則B->MAX。(3)若C>MAX,則C->MAX。(4)輸出MAX,MAX既是最大數(shù)。具體的方法是:(1)弄清由人工完成所應(yīng)該采取的步驟;(2)對這些步驟進(jìn)行歸納整理,抽象出數(shù)學(xué)模型;(3)對其中的重復(fù)步驟,通過使用相同變量等方式求得形式上的統(tǒng)一,然后簡練地采用循環(huán)的方法加以解決。1.1算法算法的特性:1)有窮性——應(yīng)含有有限的操作步驟,不能是無限的。有窮性指在“合理的限度之內(nèi)”。2)唯一性——每一個(gè)步驟都是確定的,只有一個(gè)涵義,不可以為二義性。3)有零個(gè)或多個(gè)輸入——在執(zhí)行算法時(shí)需要從外界獲取必要的信息。4)有一個(gè)或多個(gè)輸出——算法執(zhí)行的目的就是為了求解,

“解”就是輸出的信息。沒有輸出的算法是沒有意義的。5)正確性——每一個(gè)步驟應(yīng)當(dāng)被有效的執(zhí)行,并得到確定的結(jié)果。1.1算法算法的表示:(采用描述算法的工具)端點(diǎn):表示程序的轉(zhuǎn)向,常用來表示程序的開始和結(jié)束。處理:操作的功能判斷:單入口多出口,表明判斷的條件流線:表示程序的執(zhí)行方向和順序。數(shù)據(jù):表示數(shù)據(jù)的名稱、類型和用途等。(2)N-S圖:

全部算法寫在一個(gè)大的矩形框中,沒有指向箭頭。特點(diǎn):由基本結(jié)構(gòu)按順序組成,易讀、易畫。(1)流程圖:

用一些圖框表示各種操作的算法。特點(diǎn):直觀、形象、易于理解。(3)PAD圖

是近年來在軟件開發(fā)中被廣泛使用的一種算法的圖形表示法。特點(diǎn):可展現(xiàn)算法的層次結(jié)構(gòu),直觀易懂。TN當(dāng)〈條件〉滿足1.1算法1.1算法輸入三個(gè)數(shù),然后輸出最大的數(shù)。算法可以寫成:(1)輸入A,B,C;(2)若A>B,則A->MAX;若A<B,則B->MAX。(3)若C>MAX,則C->MAX。(4)輸出MAX,MAX既是最大數(shù)。結(jié)構(gòu)化的算法描述:條件:(1)程序清晰、可讀性強(qiáng);(2)程序設(shè)計(jì)者必須按一定的規(guī)范編寫程序;(3)規(guī)定了幾種具有良好特性的基本結(jié)構(gòu),用它們作為構(gòu)成程序的基本單元。基本結(jié)構(gòu)應(yīng)具有以下特點(diǎn):①一個(gè)入口;②一個(gè)出口;③沒有永遠(yuǎn)執(zhí)行不到的語句;④沒有死循環(huán);順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是符合上述特點(diǎn)的基本結(jié)構(gòu),已經(jīng)證明由這三種基本結(jié)構(gòu)所構(gòu)成的程序可以解決任何復(fù)雜的問題。1.1算法例1的算法描述A1=1i=9當(dāng)i>=1時(shí),循環(huán)a0=2*(a1+1)a1=a0i=i-1輸出a0A1=1i=9Whilei>=1輸出a0a0=2*(a1+1)a1=a0i=i-11.1算法開始輸入A,B,CA>B?TNMAX=AMAX=BC>MAX?NTMAX=C輸出A,B,C結(jié)束例2的算法描述:1.2語句格式:[標(biāo)號]操作符操作數(shù)[;注釋]MOV、ADD、SUB由一個(gè)或多個(gè)組成,由逗號“,”分開。例

MOVAL,BLADDCL,DL也可以在說明的同時(shí)給變量賦初值,例如:MOVAL,0

XORAL,AL注意:(1)組成標(biāo)號的字符:

A~Z,a~z,0~9,?,.@,$,和_(下劃線);(2)標(biāo)號的最大長度為3l(字符個(gè)數(shù))。(3)標(biāo)號的第一個(gè)字符不能是0~9的數(shù)字。(4)機(jī)器指令語句中標(biāo)號必須以冒號結(jié)束,偽指令語句中的標(biāo)號不允許有冒號.聲明

匯編語言本身對機(jī)器指令的助記符號,偽指令助記符號和寄存器名字都已作了定義,稱為保留字,編程時(shí)定義的標(biāo)識符號通常稱為自定義名字,不要用保留字作為自定義名字,以免引起混淆。1.2語句1.3程序設(shè)計(jì)語言什么是程序設(shè)計(jì)語言?

實(shí)際是一系列對計(jì)算機(jī)可以進(jìn)行操作的規(guī)則。按照這些規(guī)則,人們可以編寫程序與計(jì)算機(jī)進(jìn)行信息交流。因此程序設(shè)計(jì)語言實(shí)際上是人與計(jì)算機(jī)進(jìn)行信息交流的工具。面向機(jī)器的語言(低級語言)機(jī)器語言(0/1組成的機(jī)器代碼)匯編語言(匯編指令加地址)脫離機(jī)器的語言(高級語言)匯編語言于1935年提出,目前是計(jì)算機(jī)程序設(shè)計(jì)語言的主流語種。1.4.1C語言的特點(diǎn):

1.適合開發(fā)系統(tǒng)軟件2.結(jié)構(gòu)化的程序設(shè)計(jì)語言3.豐富的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)4.運(yùn)算符多樣化5.可移植性好6.語句簡潔緊湊7.編程風(fēng)格靈活,語法限制少,使用靈活相同的運(yùn)算,用其他高級語言只有一種表示方法,而匯編語言可以有多種表示方法。例如:用PASCAL對X,Y,Z賦值只能寫三個(gè)語句:

X=5;Y=5;Z=5;而匯編語言可形成多種正確寫法:MOVAL,5MOVBL,5MOVCL,5寄存器可以互換。1.4匯編語言概述1.4.2標(biāo)識符

C語言的標(biāo)識符是滿足如下條件的字符序列:(1)只能由英文字母、數(shù)字和下劃線組成。(2)必須以英文字母或下劃線開頭。C語言中,標(biāo)識符可以用作變量名、函數(shù)名、數(shù)組名和文件名等。C語言中,標(biāo)識符分為關(guān)鍵字(32個(gè),用戶標(biāo)識符不能采用)、

預(yù)定義標(biāo)識符和用戶標(biāo)識符三種。注意:①根據(jù)ANSI標(biāo)準(zhǔn),只有前31個(gè)字符是有意義的。②標(biāo)識符不要與關(guān)鍵字(C語言的關(guān)鍵字都采用小寫字母)同名,最好也不要與C語言提供的標(biāo)準(zhǔn)庫函數(shù)名同名;③C語言對大、小寫字母嚴(yán)格區(qū)分。1.4匯編語言概述例:指出合法的標(biāo)識符

“ABA”S05file.cAbc10pageprintfyellow_reda&b-113_ACG1.4C語言概述

1.4.3匯編語言的程序設(shè)計(jì)風(fēng)格DSEG SEGMENT ;數(shù)據(jù)段開始DATAl DB 13H,26H;原始數(shù)據(jù)DATA2 DW 0;保存結(jié)果單元DSEG ENDS ;數(shù)據(jù)段結(jié)束CSEG SEGMENT ;代碼段開始

ASSUME CS:CSEG,DS:DSEG,START: MOVAX,DSG;初的化數(shù)據(jù)段基址

MOVDS,AX MOVAL,DATA1 ;取第一個(gè)數(shù)據(jù)

ADDAL,DATAl十1 ;與第二個(gè)數(shù)據(jù)加

MOVBYTEPTRDATA2,AL ;保存

MOVAH,4CH INT 21H ;返間DOSC5EG ENDS ;代碼段結(jié)束

END START ;源程序結(jié)束設(shè)計(jì)風(fēng)格歸納為:

C語言不嚴(yán)格區(qū)分大、小寫英文字母。例:編寫一個(gè)簡單加法運(yùn)算程序如下:C語言程序習(xí)慣上使用大寫英文字母1.4匯編語言概述

C語言程序是由一個(gè)個(gè)的語句組成。

C程序源程序文件1源程序文件i源程序文件n子程序1子程序

i子程序n函數(shù)體函數(shù)首部匯編程序的構(gòu)成:1.4匯編語言概述?問題1:匯編語言源程序的最小單位是:A.程序行B.語句C.函數(shù)D.字符?問題2:對匯編語言描述正確的是:A.匯編語言源程序中可以有重名的函數(shù)

B.匯編語言源程序中要求每行只能書寫一條語句

C.注釋可以出現(xiàn)在匯編語言源程序中的任意位置

D.最小的C源程序中沒有任何內(nèi)容?問題3:

以下說法是正確的:A.在匯編語言中,要調(diào)用的子程序必須在主程序中定義

B.匯編語言程序總是從第一個(gè)定義的子程序開始執(zhí)行

C.匯編語言程序中,主程序必須放在程序的開始部分

D.匯編語言程序總是從主程序開始執(zhí)行1.4匯編語言概述

1.4.6匯編語言的開發(fā)與運(yùn)行開發(fā)一個(gè)匯編程序,一般過程:

編輯:使用一個(gè)文本編輯器將編寫好的C程序輸入計(jì)算機(jī),并以文本文件的形式保存C語言源程序,其文件擴(kuò)展名為“.ASM”

。

編譯:使用一個(gè)匯編語言編譯系統(tǒng)對匯編語言源程序進(jìn)行語法檢查和翻譯,生成同名的“.OBJ”目標(biāo)文件。

鏈接:將目標(biāo)文件和系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù)等連接在一起,生成一個(gè)同名的“.EXE”可執(zhí)行文件。

執(zhí)行:脫離C語言編譯系統(tǒng),可在操作系統(tǒng)下鍵入文件名直接運(yùn)行。1

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論