版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 匯編言語源程序的組成部分有:模塊、段、子程序和匯編言語源程序的組成部分有:模塊、段、子程序和宏等。一個模塊對應(yīng)一個目的文件,當(dāng)開發(fā)較大型的宏等。一個模塊對應(yīng)一個目的文件,當(dāng)開發(fā)較大型的運用程序時,該程序能夠由假設(shè)干個目的文件或庫結(jié)運用程序時,該程序能夠由假設(shè)干個目的文件或庫結(jié)合而成的。有關(guān)子程序的知識和宏將在后續(xù)章節(jié)引見,合而成的。有關(guān)子程序的知識和宏將在后續(xù)章節(jié)引見,本章將引見程序段及程序構(gòu)造。本章將引見程序段及程序構(gòu)造。1 1 段的定義段的定義微機系
2、統(tǒng)的內(nèi)存是分段管理的,為了與之相對應(yīng),匯編微機系統(tǒng)的內(nèi)存是分段管理的,為了與之相對應(yīng),匯編言語源程序也分假設(shè)干個段來構(gòu)成。言語源程序也分假設(shè)干個段來構(gòu)成。8086CPU8086CPU有四個段有四個段存放器,在該系統(tǒng)環(huán)境下運轉(zhuǎn)的程序在某個時辰最多存放器,在該系統(tǒng)環(huán)境下運轉(zhuǎn)的程序在某個時辰最多可訪問四個段,而可訪問四個段,而8038680386及其以后的及其以后的CPUCPU都含有六個段都含有六個段存放器,于是,在這些系統(tǒng)環(huán)境下開發(fā)的運轉(zhuǎn)程序在存放器,于是,在這些系統(tǒng)環(huán)境下開發(fā)的運轉(zhuǎn)程序在某個時辰最多可訪問六個段。某個時辰最多可訪問六個段。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 1 1
3、段的定義段的定義不論程序在某個時辰最多能訪問多少個段,在編程序時,不論程序在某個時辰最多能訪問多少個段,在編程序時,程序員都可以定義比該段數(shù)更多的段。在通常情況下,程序員都可以定義比該段數(shù)更多的段。在通常情況下,一個段的長度不能超越一個段的長度不能超越64K64K,在,在8038680386及其以后系統(tǒng)的及其以后系統(tǒng)的維護方式下,段基地址是維護方式下,段基地址是3232位,段的最大長度可達位,段的最大長度可達4G4G。段的長度是指該段所占的字節(jié)數(shù):段的長度是指該段所占的字節(jié)數(shù):假設(shè)段是數(shù)據(jù)段,那么其長度是其一切變量所占字節(jié)數(shù)假設(shè)段是數(shù)據(jù)段,那么其長度是其一切變量所占字節(jié)數(shù)的總和;的總和;假設(shè)段
4、是代碼段,那么其長度是其一切指令所占字節(jié)數(shù)假設(shè)段是代碼段,那么其長度是其一切指令所占字節(jié)數(shù)的總和。的總和。在定義段時,每個段都有一個段名。在取段名時,要取在定義段時,每個段都有一個段名。在取段名時,要取一個具有一定含義的段名。一個具有一定含義的段名。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 1 1 段的定義段的定義段定義的普通格式如下:段定義的普通格式如下:段名段名 SEGMENTSEGMENT 對齊類型對齊類型 組合類型組合類型 類別類別 ; ;段內(nèi)的詳細(xì)內(nèi)容段內(nèi)的詳細(xì)內(nèi)容段名段名 ENDSENDS5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 2 2 段存放器的闡明語句段存放器的
5、闡明語句在匯編言語源程序中可以定義多個段,每個段都要與一在匯編言語源程序中可以定義多個段,每個段都要與一個段存放器建立一種對應(yīng)關(guān)系。建立這種對應(yīng)關(guān)系的個段存放器建立一種對應(yīng)關(guān)系。建立這種對應(yīng)關(guān)系的闡明語句格式如下:闡明語句格式如下:ASSUMEASSUME 段存放器名段存放器名: :段名段名, , 段存放器名段存放器名: :段名段名, , 其中:段存放器是其中:段存放器是CSCS、DSDS、ESES、SSSS、FSFS和和GSGS,段名是在,段名是在段定義語句闡明時的段名。段定義語句闡明時的段名。在一條在一條ASSUMEASSUME語句中可建立多組段存放器與段之間的關(guān)語句中可建立多組段存放器與
6、段之間的關(guān)系,每種對應(yīng)關(guān)系要用逗號分隔。系,每種對應(yīng)關(guān)系要用逗號分隔。例如,例如,ASSUMEASSUME CS:CODE1, DS:DATA1 CS:CODE1, DS:DATA15.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 2 2 段存放器的闡明語句段存放器的闡明語句上面的語句闡明了:上面的語句闡明了:CSCS對應(yīng)于代碼段對應(yīng)于代碼段CODE1CODE1,DSDS對應(yīng)于數(shù)對應(yīng)于數(shù)據(jù)段據(jù)段DATA1DATA1。在在ASSUMEASSUME語句中,還可以用關(guān)鍵字語句中,還可以用關(guān)鍵字NOTHINGNOTHING來闡明某個段來闡明某個段存放器不與任何段相對應(yīng)。下面語句闡明了段存放器存放器不與
7、任何段相對應(yīng)。下面語句闡明了段存放器ESES不與某段相對應(yīng)。不與某段相對應(yīng)。ASSUMEASSUME ES:NOTHING ES:NOTHING在通常情況下,代碼段的第一條語句就是用在通常情況下,代碼段的第一條語句就是用ASSUMEASSUME語句語句來闡明段存放器與段之間的對應(yīng)關(guān)系。在代碼段的其來闡明段存放器與段之間的對應(yīng)關(guān)系。在代碼段的其它位置,還可以用另一個它位置,還可以用另一個ASSUMEASSUME語句來改動前面語句來改動前面ASSUMEASSUME語句所闡明的對應(yīng)關(guān)系,這樣,代碼段中的指語句所闡明的對應(yīng)關(guān)系,這樣,代碼段中的指令就用最近的令就用最近的ASSUMEASSUME語句所建
8、立的對應(yīng)關(guān)系來確定指語句所建立的對應(yīng)關(guān)系來確定指令中的有關(guān)信息。令中的有關(guān)信息。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 3 3 堆棧段的闡明堆棧段的闡明堆棧段是一個特殊的段,在程序中可以定義它,也可以堆棧段是一個特殊的段,在程序中可以定義它,也可以不定義。除了要生成不定義。除了要生成COMCOM型執(zhí)行文件的源程序外,一個型執(zhí)行文件的源程序外,一個完好的源程序普通最好定義堆棧段。假設(shè)在程序中不完好的源程序普通最好定義堆棧段。假設(shè)在程序中不定義堆棧段,那么,操作系統(tǒng)在裝入該執(zhí)行程序時將定義堆棧段,那么,操作系統(tǒng)在裝入該執(zhí)行程序時將自動為其指定一個自動為其指定一個64K64K字節(jié)的堆棧段。
9、字節(jié)的堆棧段。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造3 3 堆棧段的闡明堆棧段的闡明在源程序中,可用以下方法來定義堆棧段。在源程序中,可用以下方法來定義堆棧段。方法方法1 1:STACK1 SEGMENTSTACK1 SEGMENTDB 256 DUP(?) ;256DB 256 DUP(?) ;256是堆棧的長度,可根據(jù)是堆棧的長度,可根據(jù)需求進展改動需求進展改動TOP LABEL WORDTOP LABEL WORDSTACK1 ENDSSTACK1 ENDS在源程序的代碼段中,還要添加如下程序段,才干把段在源程序的代碼段中,還要添加如下程序段,才干把段STACK1STACK1當(dāng)
10、作堆棧段來運用。當(dāng)作堆棧段來運用。ASSUMEASSUMESS:STACK1SS:STACK1 ; ;可在代碼段的段指定語句可在代碼段的段指定語句中一同闡明中一同闡明CLICLI ; ;制止呼應(yīng)可屏蔽中斷制止呼應(yīng)可屏蔽中斷MOVMOVAX, STACK1AX, STACK1MOVMOVSS, AXSS, AXMOVMOVSP, OFFSET TOPSP, OFFSET TOP ; ;給堆棧段的棧頂存放器給堆棧段的棧頂存放器SPSP賦初賦初值值STISTI; ;恢復(fù)呼應(yīng)可屏蔽中斷恢復(fù)呼應(yīng)可屏蔽中斷5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 3 3 堆棧段的闡明堆棧段的闡明方法方法2 2:S
11、TACK1STACK1SEGMENTSEGMENTSTACKSTACK ; ;定義一個堆棧段,其段名定義一個堆棧段,其段名為為STACK1STACK1DBDB256 DUP(?)256 DUP(?)STACK1STACK1ENDSENDS上述段定義闡明了該段是堆棧段,系統(tǒng)會自動把段存放上述段定義闡明了該段是堆棧段,系統(tǒng)會自動把段存放器器SSSS和棧頂存放器和棧頂存放器SPSP與該堆棧段之間建立相應(yīng)的關(guān)系,與該堆棧段之間建立相應(yīng)的關(guān)系,并設(shè)置其初值,而不用在代碼段對它們進展賦值。并設(shè)置其初值,而不用在代碼段對它們進展賦值。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 4. 4. 段的根本屬性
12、段的根本屬性在第一小節(jié)中,我們曾經(jīng)引見了段定義的格式,如今對在第一小節(jié)中,我們曾經(jīng)引見了段定義的格式,如今對段定義中另外的一些屬性段定義中另外的一些屬性 “ “對齊類型、對齊類型、“組合類型組合類型和和“類別作以闡明,這些可選項可根據(jù)需求選擇類別作以闡明,這些可選項可根據(jù)需求選擇書寫。假設(shè)源程序中不指定某個屬性,那么,匯編程書寫。假設(shè)源程序中不指定某個屬性,那么,匯編程序?qū)⑦\用該屬性的缺省值。序?qū)⑦\用該屬性的缺省值。(1) (1) 對齊類型對齊類型(ALIGN)(ALIGN)對齊類型表示當(dāng)前段對起始地址的要求,銜接程序?qū)R類型表示當(dāng)前段對起始地址的要求,銜接程序(LINK.EXE)(LINK.
13、EXE)按表按表6.16.1的地址格式來定位段的起始地址。的地址格式來定位段的起始地址。在進展段定位時,會根據(jù)其定位類型進展定位的,所在進展段定位時,會根據(jù)其定位類型進展定位的,所以,各段之間就有能夠出現(xiàn)一些空閑字節(jié),即能夠浪以,各段之間就有能夠出現(xiàn)一些空閑字節(jié),即能夠浪費幾個字節(jié)單元。費幾個字節(jié)單元。段對齊類型與段起始地址之間的對應(yīng)關(guān)系段對齊類型與段起始地址之間的對應(yīng)關(guān)系對齊類型起始地址(二進制)功能闡明最多的空閑字節(jié)數(shù)BYTExxxx xxxx xxxx xxxx xxxx下一個字節(jié)地址0WORDxxxx xxxx xxxx xxxx xxx0下一個字地址1DWORDxxxx xxxx x
14、xxx xxxx xx00下一個雙字地址3PARAxxxx xxxx xxxx xxxx 0000下一個節(jié)地址15PAGExxxx xxxx xxxx 0000 0000下一個頁地址1275.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 4. 4. 段的根本屬性段的根本屬性(2) (2) 組合類型組合類型(COMBINE)(COMBINE) 組合類型是通知銜接程序如何把不同模塊中段名一樣組合類型是通知銜接程序如何把不同模塊中段名一樣的段合并在一同。詳細(xì)的組合類型如下:的段合并在一同。詳細(xì)的組合類型如下:NONE表示當(dāng)前段在邏輯上獨立于其它模塊,并有其本人的基地址。NONE是缺省的組合類型。PU
15、BLIC表示當(dāng)前段與其它模塊中同段名的PUBLIC類型段組合成一個段。組合的先后次序取決于LINK程序中目的模塊陳列的次序。在組合時,后續(xù)段的起始地址要按其對齊類型進展定位,所以,同名段之間能夠有間隔。COMMON表示當(dāng)前段與其它模塊中同名段重疊,也就是說,它們的起始地址一樣。最終段的長度是同名段的最大長度。由于段覆蓋,所以,前一同名段中的初始化數(shù)據(jù)被后續(xù)段的初始數(shù)據(jù)覆蓋掉。STACK組合類型STACK表示當(dāng)前段是堆棧棧,其組合情況與PUBLIC一樣。AT 數(shù)值表達式該數(shù)值表達式是當(dāng)前段所指定的絕對起始地址的段地址。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 4. 4. 段的根本屬性段的
16、根本屬性(3) (3) 類別類別(CLASS)(CLASS)類別是一個由程序員指定的用單引號括起來的字符串。類別是一個由程序員指定的用單引號括起來的字符串。假設(shè)一個段沒有給出類別,那么,這個段的類別就為假設(shè)一個段沒有給出類別,那么,這個段的類別就為空。類別是用于段的分類,銜接程序利用該類別來調(diào)空。類別是用于段的分類,銜接程序利用該類別來調(diào)整同名、同類別的段,并使它們相鄰。典型的類別是整同名、同類別的段,并使它們相鄰。典型的類別是DataData和和CodeCode。假設(shè)指定某段的類別是。假設(shè)指定某段的類別是CodeCode,那,那么,該段最好是代碼段,這樣,有的調(diào)試程序么,該段最好是代碼段,這
17、樣,有的調(diào)試程序( (如:如:CodeView)CodeView)就可以順序任務(wù)。就可以順序任務(wù)。例如:例如:DATA1DATA1SEGMENT WORD PUBLIC DataSEGMENT WORD PUBLIC DataDATA1DATA1ENDSENDS上述段定義闡明了該段的起始地址是下一個字地址、組上述段定義闡明了該段的起始地址是下一個字地址、組合類型為合類型為PUBLICPUBLIC、段類別是、段類別是DataData。5.1 5.1 源程序的根本構(gòu)造源程序的根本構(gòu)造 4. 4. 段的根本屬性段的根本屬性(4) (4) 段組段組(GROUP)(GROUP) 段組偽指令段組偽指令GR
18、OUPGROUP是用于把源程序模塊中假設(shè)干個段結(jié)是用于把源程序模塊中假設(shè)干個段結(jié)合成一個組,并對該段組定義一個段組名。段組偽指合成一個組,并對該段組定義一個段組名。段組偽指令的格式如下:令的格式如下: 段組名段組名 GROUP GROUP 段名段名, , 段名段名, , 其中:段名之間要用逗號間隔,段名也可以用表達式其中:段名之間要用逗號間隔,段名也可以用表達式“SEG “SEG 變量或變量或“SEG “SEG 標(biāo)號。標(biāo)號。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.2 5.2 匯編言語程序設(shè)計的根本方法和步驟匯編言語程序設(shè)計的根本方法和步驟1 1 匯編言語程序設(shè)計根本步驟匯編言語程序設(shè)
19、計根本步驟 普通來說,編制一個匯編言語程序的步驟如下:普通來說,編制一個匯編言語程序的步驟如下:分析題意,確定算法或算法思想。分析題意,確定算法或算法思想。根據(jù)算法畫出流程圖,簡單的情況也可不畫。根據(jù)算法畫出流程圖,簡單的情況也可不畫。分配存儲空間和任務(wù)單元,合理地運用存放器。分配存儲空間和任務(wù)單元,合理地運用存放器。根據(jù)流程圖編寫程序。根據(jù)流程圖編寫程序。上機調(diào)試運轉(zhuǎn)程序。上機調(diào)試運轉(zhuǎn)程序。編寫闡明文件編寫闡明文件第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.2 5.2 匯編言語程序設(shè)計的根本方法和步驟匯編言語程序設(shè)計的根本方法和步驟2 2 構(gòu)造化程序的概念構(gòu)造化程序的概念構(gòu)造化程序設(shè)計
20、由迪克斯特拉構(gòu)造化程序設(shè)計由迪克斯特拉(E.W.dijkstra)(E.W.dijkstra)在在19691969年年提出,是以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)提出,是以模塊化設(shè)計為中心,將待開發(fā)的軟件系統(tǒng)劃分為假設(shè)干個相互獨立的模塊,這樣使完成每一個劃分為假設(shè)干個相互獨立的模塊,這樣使完成每一個模塊的任務(wù)變單純而明確,為設(shè)計一些較大的軟件打模塊的任務(wù)變單純而明確,為設(shè)計一些較大的軟件打下了良好的根底。下了良好的根底。 由于模塊相互獨立,因此在設(shè)計其中一個模塊時,不會由于模塊相互獨立,因此在設(shè)計其中一個模塊時,不會遭到其它模塊的牽連,因此可將原來較為復(fù)雜的問題遭到其它模塊的牽連,因此可將原
21、來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計。模塊的獨立性還為擴化簡為一系列簡單模塊的設(shè)計。模塊的獨立性還為擴展已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,由于展已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,由于我們可以充分利用現(xiàn)有的模塊作積木式的擴展。我們可以充分利用現(xiàn)有的模塊作積木式的擴展。 第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.2 5.2 匯編言語程序設(shè)計的根本方法和步驟匯編言語程序設(shè)計的根本方法和步驟2 2 構(gòu)造化程序的概念構(gòu)造化程序的概念按照構(gòu)造化程序設(shè)計的觀念,任何算法功能都可以經(jīng)過按照構(gòu)造化程序設(shè)計的觀念,任何算法功能都可以經(jīng)過由程序模塊組成的三種根本程序構(gòu)造的組合由程序模塊組成
22、的三種根本程序構(gòu)造的組合: : 順序構(gòu)順序構(gòu)造、選擇構(gòu)造和循環(huán)構(gòu)造來實現(xiàn)。造、選擇構(gòu)造和循環(huán)構(gòu)造來實現(xiàn)。構(gòu)造化程序設(shè)計的根本思想是采用構(gòu)造化程序設(shè)計的根本思想是采用 自頂向下,逐漸求精自頂向下,逐漸求精 的程序設(shè)計方法和的程序設(shè)計方法和 單入口單出口單入口單出口 的控制構(gòu)造。自頂?shù)目刂茦?gòu)造。自頂向下、逐漸求精的程序設(shè)計方法從問題本身開場,經(jīng)向下、逐漸求精的程序設(shè)計方法從問題本身開場,經(jīng)過逐漸細(xì)化,將處理問題的步驟分解為由根本程序構(gòu)過逐漸細(xì)化,將處理問題的步驟分解為由根本程序構(gòu)造模塊組成的構(gòu)造化程序框圖;造模塊組成的構(gòu)造化程序框圖; 單入口單出口單入口單出口 的思的思想以為一個復(fù)雜的程序,假設(shè)它
23、僅是由順序、選擇和想以為一個復(fù)雜的程序,假設(shè)它僅是由順序、選擇和循環(huán)三種根本程序構(gòu)造經(jīng)過組合、嵌套構(gòu)成,那么這循環(huán)三種根本程序構(gòu)造經(jīng)過組合、嵌套構(gòu)成,那么這個新構(gòu)造的程序一定是一個單入口單出口的程序。據(jù)個新構(gòu)造的程序一定是一個單入口單出口的程序。據(jù)此就很容易編寫出構(gòu)造良好、易于調(diào)試的程序來。此就很容易編寫出構(gòu)造良好、易于調(diào)試的程序來。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計3 流程圖畫法規(guī)定流程圖畫法規(guī)定程序流程圖是程序分析中最根本、最重要的分析技術(shù),程序流程圖是程序分析中最根本、最重要的分析技術(shù),它是進展流程程序分析過程中最根本的工具。是由特它是進展流程程序分析過程中最根本的工具。是由
24、特定的幾何圖形、指向線、文字闡明來表示數(shù)據(jù)處置的定的幾何圖形、指向線、文字闡明來表示數(shù)據(jù)處置的步驟,籠統(tǒng)描畫邏輯控制構(gòu)造以及數(shù)據(jù)流程的表示圖。步驟,籠統(tǒng)描畫邏輯控制構(gòu)造以及數(shù)據(jù)流程的表示圖。 (1) 符號用法符號用法第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計3 流程圖畫法規(guī)定流程圖畫法規(guī)定 (2) 運用商定運用商定圖的規(guī)劃圖的規(guī)劃 流程圖中所用的符號應(yīng)該均心地分布,連線堅持合理的流程圖中所用的符號應(yīng)該均心地分布,連線堅持合理的長度,并盡量少運用長線。長度,并盡量少運用長線。符號的外形符號的外形 流程圖中多數(shù)符號內(nèi)的空白供標(biāo)注闡明性文字。運用各流程圖中多數(shù)符號內(nèi)的空白供標(biāo)注闡明性文字。運用各
25、種符號應(yīng)留意符號的外形和各符號大小的一致,防止種符號應(yīng)留意符號的外形和各符號大小的一致,防止使符號變形或各符號大小比例不一。使符號變形或各符號大小比例不一。符號內(nèi)的闡明文字符號內(nèi)的闡明文字 應(yīng)使符號內(nèi)的闡明文字盡能夠簡明。通常按從左向右和應(yīng)使符號內(nèi)的闡明文字盡能夠簡明。通常按從左向右和從上向下方式書寫,并與流向無關(guān)。假設(shè)闡明文字較從上向下方式書寫,并與流向無關(guān)。假設(shè)闡明文字較多,符號內(nèi)寫不完,可運用注解符。假設(shè)注解符干擾多,符號內(nèi)寫不完,可運用注解符。假設(shè)注解符干擾或影響到圖形的流程,應(yīng)將正文寫在另外一頁上,并或影響到圖形的流程,應(yīng)將正文寫在另外一頁上,并注明援用符號。注明援用符號。第五章第五
26、章 匯編言語程序設(shè)計匯編言語程序設(shè)計3 流程圖畫法規(guī)定流程圖畫法規(guī)定符號標(biāo)識符符號標(biāo)識符 為符號規(guī)定標(biāo)識符是為了便于其它文件援用該符號。為符號規(guī)定標(biāo)識符是為了便于其它文件援用該符號。便如,程序清單中援用到流程圖中的特定符號。符號便如,程序清單中援用到流程圖中的特定符號。符號標(biāo)識符普通寫在符號的左上角標(biāo)識符普通寫在符號的左上角. 符號描畫符符號描畫符 為便于進一步了解符號的功能,可標(biāo)注符號描畫符。為便于進一步了解符號的功能,可標(biāo)注符號描畫符。通常描畫符寫在符號的右上角通常描畫符寫在符號的右上角.詳細(xì)表示詳細(xì)表示 在處置符號或數(shù)據(jù)符號中畫一橫線,闡明該符號在同在處置符號或數(shù)據(jù)符號中畫一橫線,闡明該
27、符號在同一文件集中的其它地言有更為詳細(xì)的表示。橫線在符一文件集中的其它地言有更為詳細(xì)的表示。橫線在符號內(nèi)接近項端,詳細(xì)表示的標(biāo)識符寫在符號內(nèi)橫線之號內(nèi)接近項端,詳細(xì)表示的標(biāo)識符寫在符號內(nèi)橫線之上。端點符用作詳細(xì)表示的開場符號和終了符號,在上。端點符用作詳細(xì)表示的開場符號和終了符號,在此符號中應(yīng)給出加橫線符號中的標(biāo)識符。此符號中應(yīng)給出加橫線符號中的標(biāo)識符。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.2 5.2 匯編言語程序設(shè)計的根本方法和步驟匯編言語程序設(shè)計的根本方法和步驟流線流線規(guī)范流向與箭頭的運用規(guī)范流向與箭頭的運用流線的交叉流線的交叉流線的聚集流線的聚集符號流線進出符號流線進出銜接符
28、銜接符多出口判別的兩種表示方法多出口判別的兩種表示方法直接從判別符號引出多條流線直接從判別符號引出多條流線從判別符號引出一條流線,再從它引出多條流線從判別符號引出一條流線,再從它引出多條流線第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3 順序程序設(shè)計順序程序設(shè)計順序程序設(shè)計是完全按照指令的書寫順序而執(zhí)行每一條順序程序設(shè)計是完全按照指令的書寫順序而執(zhí)行每一條指令,它沒有分支、循環(huán)和轉(zhuǎn)移。是指令中最簡單,指令,它沒有分支、循環(huán)和轉(zhuǎn)移。是指令中最簡單,最常見的程序構(gòu)造,它的特點是構(gòu)造簡單,易于了解,最常見的程序構(gòu)造,它的特點是構(gòu)造簡單,易于了解,但只適宜于處置簡單問題的場所。實踐運用中
29、,完全但只適宜于處置簡單問題的場所。實踐運用中,完全采用順序構(gòu)造的程序并不多。順序構(gòu)造程序流程圖如采用順序構(gòu)造的程序并不多。順序構(gòu)造程序流程圖如下:下:S1S2S3第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3 順序程序設(shè)計順序程序設(shè)計1.1.順序程序設(shè)計舉例順序程序設(shè)計舉例【例【例1 1】試編寫一程序計算以下表達式的值?!吭嚲帉懸怀绦蛴嬎阋韵卤磉_式的值。= =v-v-* *+ +-540-540/x/x式中式中x x、v v均為有符號均為有符號字?jǐn)?shù)據(jù)。字?jǐn)?shù)據(jù)?!纠纠? 2】知某班學(xué)生的英語成果按學(xué)號從】知某班學(xué)生的英語成果按學(xué)號從1 1開場從小開場從小到大的順序陳列在到大的順
30、序陳列在TABTAB表中,假定要查詢的學(xué)生的學(xué)號表中,假定要查詢的學(xué)生的學(xué)號放在變量放在變量NONO中,請將查得的結(jié)果放在變量中,請將查得的結(jié)果放在變量ENGLISHENGLISH中。中。試編寫程序。試編寫程序?!纠纠? 3】 假設(shè)有二個字變量假設(shè)有二個字變量word1word1和和word2word2,編寫程序段,編寫程序段實現(xiàn)交換其值的功能。實現(xiàn)交換其值的功能?!纠纠? 4】 試編寫一個程序,把緊縮存放的試編寫一個程序,把緊縮存放的BCDBCD碼,轉(zhuǎn)換為碼,轉(zhuǎn)換為其對應(yīng)十進制數(shù)字的其對應(yīng)十進制數(shù)字的ASCIIASCII碼。碼。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3
31、 順序程序設(shè)計順序程序設(shè)計2.2.用簡單查表法實現(xiàn)代碼轉(zhuǎn)換用簡單查表法實現(xiàn)代碼轉(zhuǎn)換在匯編言語程序設(shè)計中,代碼轉(zhuǎn)換是經(jīng)常的事。上面的在匯編言語程序設(shè)計中,代碼轉(zhuǎn)換是經(jīng)常的事。上面的把把BCDBCD碼轉(zhuǎn)換成碼轉(zhuǎn)換成ASCIIASCII碼就是一例。對于各種不同代碼碼就是一例。對于各種不同代碼之間的轉(zhuǎn)換,往往要采用各種不同的方法,以便獲得之間的轉(zhuǎn)換,往往要采用各種不同的方法,以便獲得最正確效率。查表是實現(xiàn)代碼轉(zhuǎn)換的方法之一,下面最正確效率。查表是實現(xiàn)代碼轉(zhuǎn)換的方法之一,下面引見的簡單查表法是一種計算查表方法,適用于代碼引見的簡單查表法是一種計算查表方法,適用于代碼集合較小且轉(zhuǎn)換關(guān)系復(fù)雜的場所。集合較小
32、且轉(zhuǎn)換關(guān)系復(fù)雜的場所。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3 順序程序設(shè)計順序程序設(shè)計2.2.用簡單查表法實現(xiàn)代碼轉(zhuǎn)換用簡單查表法實現(xiàn)代碼轉(zhuǎn)換【例】編寫一個把【例】編寫一個把1616進制數(shù)字碼轉(zhuǎn)換為對應(yīng)七段代碼的進制數(shù)字碼轉(zhuǎn)換為對應(yīng)七段代碼的程序。程序。七段顯示數(shù)碼管表示圖如下:七段顯示數(shù)碼管表示圖如下:0123456第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3 順序程序設(shè)計順序程序設(shè)計2.2.用簡單查表法實現(xiàn)代碼轉(zhuǎn)換用簡單查表法實現(xiàn)代碼轉(zhuǎn)換利用上圖所示的七段顯示數(shù)碼管,能較好地顯示利用上圖所示的七段顯示數(shù)碼管,能較好地顯示1616進制進制數(shù)字?jǐn)?shù)字0 0,
33、1 1,。,。9 9,A A,B B,C C,D D,E E,F(xiàn) F。七段數(shù)。七段數(shù)碼管的每一段對應(yīng)一個二進制位,假設(shè)我們設(shè)碼管的每一段對應(yīng)一個二進制位,假設(shè)我們設(shè)0 0表示對表示對應(yīng)段亮,應(yīng)段亮,1 1表示對應(yīng)段暗,那么數(shù)字碼表示對應(yīng)段暗,那么數(shù)字碼0 0對應(yīng)以二進制對應(yīng)以二進制方式表示的代碼方式表示的代碼10000001000000,數(shù)字碼,數(shù)字碼1 1對應(yīng)以二進制方式對應(yīng)以二進制方式表示的代碼表示的代碼11110011111001,如此,數(shù)字碼,如此,數(shù)字碼F F對應(yīng)以二進制方對應(yīng)以二進制方式表示的代碼式表示的代碼00011100001110。這種用于表示七段數(shù)碼管亮暗。這種用于表示七段
34、數(shù)碼管亮暗的代碼稱為七段代碼。的代碼稱為七段代碼。顯然,顯然,1616進制數(shù)字碼與七段代碼間的關(guān)系難以表示成一進制數(shù)字碼與七段代碼間的關(guān)系難以表示成一個簡單的算術(shù)表達式,所以,利用表的方法實現(xiàn)代碼個簡單的算術(shù)表達式,所以,利用表的方法實現(xiàn)代碼轉(zhuǎn)換較適宜。轉(zhuǎn)換較適宜。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3 順序程序設(shè)計順序程序設(shè)計3. 3. 查表法求函數(shù)值查表法求函數(shù)值有許多數(shù)學(xué)函數(shù)的求值計算用匯編言語實現(xiàn)較為困難,有許多數(shù)學(xué)函數(shù)的求值計算用匯編言語實現(xiàn)較為困難,除非利用數(shù)學(xué)協(xié)處置器。然而,上述這種表的組織方除非利用數(shù)學(xué)協(xié)處置器。然而,上述這種表的組織方式和查表的方法,可以
35、適用于直接獲得某些數(shù)學(xué)函數(shù)式和查表的方法,可以適用于直接獲得某些數(shù)學(xué)函數(shù)的值。的值?!纠吭O(shè)【例】設(shè)X X是一個是一個1-101-10之間的整數(shù),寫一個求函數(shù)之間的整數(shù),寫一個求函數(shù)Y=LOGY=LOGX X值的程序。值的程序。把把1-101-10這這1010個數(shù)的對數(shù)值組織成一張表,那么程序運轉(zhuǎn)個數(shù)的對數(shù)值組織成一張表,那么程序運轉(zhuǎn)時的計算任務(wù)就大大減緩了,甚至可以說沒有詳細(xì)的時的計算任務(wù)就大大減緩了,甚至可以說沒有詳細(xì)的計算。由于計算。由于1-101-10的以的以1010為底的對數(shù)在為底的對數(shù)在0-10-1的范圍之間,的范圍之間,為了表示的方便和思索一定的精度,所以把這些對數(shù)為了表示的方便
36、和思索一定的精度,所以把這些對數(shù)值放大值放大1000010000倍,這樣每個對數(shù)值就用一個字表示。倍,這樣每個對數(shù)值就用一個字表示。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.3 5.3 順序程序設(shè)計順序程序設(shè)計3. 3. 查表法求函數(shù)值查表法求函數(shù)值運用查表法求函數(shù)值有兩個優(yōu)點:運用查表法求函數(shù)值有兩個優(yōu)點:1 1程序比較容易;程序比較容易;2 2可以得到十進制或十六進制或任何其它格式的可以得到十進制或十六進制或任何其它格式的高精度函數(shù)值。高精度函數(shù)值。其缺陷也許不那么明顯:其缺陷也許不那么明顯:1 1函數(shù)值必需事先安排好,因此有許多限制;函數(shù)值必需事先安排好,因此有許多限制;2 2函
37、數(shù)值的精度和準(zhǔn)確性由程序員控制,而不是由數(shù)函數(shù)值的精度和準(zhǔn)確性由程序員控制,而不是由數(shù)學(xué)函數(shù)決議,當(dāng)數(shù)據(jù)表的項較多時,難免有誤差。學(xué)函數(shù)決議,當(dāng)數(shù)據(jù)表的項較多時,難免有誤差。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.4 5.4 分支程序設(shè)計分支程序設(shè)計分支程序構(gòu)造可以有兩種方式,它們分別相當(dāng)于高級言分支程序構(gòu)造可以有兩種方式,它們分別相當(dāng)于高級言語中語中IF-THEN-ELSEIF-THEN-ELSE語句和語句和CASECASE語句,適用于要求根據(jù)語句,適用于要求根據(jù)不同條件作不同處置的情況。不同條件作不同處置的情況。IF-THEN-ELSEIF-THEN-ELSE語句可以語句可以引出
38、兩個分支。引出兩個分支。CASECASE語句那么可以引出多個分支。不語句那么可以引出多個分支。不論哪一種方式,它們的共同特點就是:運轉(zhuǎn)方向是向論哪一種方式,它們的共同特點就是:運轉(zhuǎn)方向是向前的,在某一種特定條件下,只能執(zhí)行多個分支中的前的,在某一種特定條件下,只能執(zhí)行多個分支中的一個分支。一個分支。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.4 5.4 分支程序設(shè)計分支程序設(shè)計IF-THEN-ELSE語句構(gòu)造條件判別程序段1程序段2第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.4 5.4 分支程序設(shè)計分支程序設(shè)計CASE語句構(gòu)造程序段1程序段2程序段N條件判別第五章第五章 匯編言語程
39、序設(shè)計匯編言語程序設(shè)計5.4 5.4 分支程序設(shè)計分支程序設(shè)計1.1.分支程序舉例分支程序舉例【例【例1 1】設(shè)有三個單字節(jié)無符號數(shù)存放在】設(shè)有三個單字節(jié)無符號數(shù)存放在BUFFERBUFFER開場的緩開場的緩沖區(qū)中,寫一個能將它們按大到小重新陳列的程序。沖區(qū)中,寫一個能將它們按大到小重新陳列的程序?!纠纠? 2】 知字節(jié)變量知字節(jié)變量CHAR1CHAR1,編寫一程序段,把它由小寫,編寫一程序段,把它由小寫字母變成大寫字母。字母變成大寫字母?!纠纠? 3】編寫一程序段,計算以下函數(shù)值。其中:變量】編寫一程序段,計算以下函數(shù)值。其中:變量X X和和Y Y是有符號字變量。是有符號字變量。第五章第
40、五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.4 5.4 分支程序設(shè)計分支程序設(shè)計2. 2. 利用地址表實現(xiàn)多向分支利用地址表實現(xiàn)多向分支當(dāng)要根據(jù)某個變量的值,進展多種不同處置時,就產(chǎn)生當(dāng)要根據(jù)某個變量的值,進展多種不同處置時,就產(chǎn)生了多向分支。多向分支的構(gòu)造圖了多向分支。多向分支的構(gòu)造圖5.175.17所示。在高級言所示。在高級言語中,常用語中,常用SWITCHSWITCH語句等實現(xiàn)多向分支。在匯編言語語句等實現(xiàn)多向分支。在匯編言語中,如何實現(xiàn)多向分支呢?中,如何實現(xiàn)多向分支呢?第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.4 5.4 分支程序設(shè)計分支程序設(shè)計2. 2. 利用地址表實現(xiàn)多向分
41、支利用地址表實現(xiàn)多向分支【例】任何復(fù)雜的多向分支總可分解成多個簡單分支?!纠咳魏螐?fù)雜的多向分支總可分解成多個簡單分支。以下圖給出了根據(jù)以下圖給出了根據(jù)X X的值能否為的值能否為1-41-4,而進展,而進展5 5中不同處中不同處置的流程圖片段。置的流程圖片段。N條件1滿足?Y處置語句1N條件2滿足?Y處置語句2N條件3滿足?Y處置語句3N條件4滿足?Y處置語句4處置語句5第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.5 5.5 循環(huán)程序設(shè)計循環(huán)程序設(shè)計在程序設(shè)計中我們有時會需求能按一定規(guī)律,多次反復(fù)在程序設(shè)計中我們有時會需求能按一定規(guī)律,多次反復(fù)執(zhí)行的一串語句,這類程序叫循環(huán)程序,在本章節(jié)
42、中,執(zhí)行的一串語句,這類程序叫循環(huán)程序,在本章節(jié)中,我們將對循環(huán)程序設(shè)計作以引見。我們將對循環(huán)程序設(shè)計作以引見。循環(huán)程序普通由四個部分組成:循環(huán)程序普通由四個部分組成: 1 1 置循環(huán)初值部分:這是為了保證循環(huán)程序能正常進置循環(huán)初值部分:這是為了保證循環(huán)程序能正常進展循環(huán)操作而必需做的預(yù)備任務(wù)。循環(huán)初值分兩類:展循環(huán)操作而必需做的預(yù)備任務(wù)。循環(huán)初值分兩類:一類是循環(huán)任務(wù)部分的初值,另一類是控制循環(huán)終了一類是循環(huán)任務(wù)部分的初值,另一類是控制循環(huán)終了條件的初值。條件的初值。 2 2 任務(wù)部分:即需求反復(fù)執(zhí)行的程序段。這是循環(huán)的任務(wù)部分:即需求反復(fù)執(zhí)行的程序段。這是循環(huán)的中心,稱之為循環(huán)體。中心,稱之為循環(huán)體。 3 3 修正部分:按一定規(guī)律修正操作數(shù)地址及控制變量,修正部分:按一定規(guī)律修正操作數(shù)地址及控制變量,以便每次執(zhí)行循環(huán)體時得到新的數(shù)據(jù)。以便每次執(zhí)行循環(huán)體時得到新的數(shù)據(jù)。 4 4 控制部分:用來保證循環(huán)程序按規(guī)定的次數(shù)或特定控制部分:用來保證循環(huán)程序按規(guī)定的次數(shù)或特定條件正常循環(huán)。條件正常循環(huán)。第五章第五章 匯編言語程序設(shè)計匯編言語程序設(shè)計5.5 5.5 循環(huán)程序設(shè)計循環(huán)程序設(shè)計在程序設(shè)計中,常見的循環(huán)構(gòu)造有兩種:一種是先執(zhí)行在程序設(shè)計中,常見的循環(huán)構(gòu)造有兩種:一種是先執(zhí)行循環(huán)體,然后判別循環(huán)能否繼續(xù)進展;另一種是先判循環(huán)體,然后判別循環(huán)能否繼續(xù)進展;另一種是先判別能
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年整棟商業(yè)綜合體收購合同協(xié)議書3篇
- 餐飲企業(yè)食品安全管理與保障合同
- 2024年鋼板租賃交易合同
- 2024年金融機構(gòu)后勤服務(wù)保障委托合同3篇
- 2025年度生物科技項目知識產(chǎn)權(quán)保護合同3篇
- 2024年適用:5G網(wǎng)絡(luò)技術(shù)在智慧城市建設(shè)項目中的服務(wù)合同
- 2025年度文化產(chǎn)業(yè)投資基金委托投資合同3篇
- 2024年版房屋共有權(quán)轉(zhuǎn)移合同:涉及共有房屋權(quán)屬轉(zhuǎn)移的詳細(xì)規(guī)定
- 2024版工程機械設(shè)備租賃合同書
- 陶瓷產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型升級-洞察分析
- 電工工具報價單
- 教科版三年級上冊科學(xué)教案(全冊)
- 勞動力安排計劃及勞動力計劃表(樣板)
- 利潤表4(通用模板)
- 教育評價學(xué)全套ppt課件完整版教學(xué)教程
- 注塑領(lǐng)班作業(yè)指導(dǎo)書
- ASTM B330-20 Standard Test Methods for Estimating Average Particle Size of Metal Powders and Related Compounds Using%2
- 顧客忠誠度論文
- 血氣分析及臨床應(yīng)用
- 浙江省市政工程安全臺賬完整
- 歐洲城市廣場歷史演變
評論
0/150
提交評論