




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1第匯編語(yǔ)言程序設(shè)計(jì)4.1匯編語(yǔ)言概述什么是匯編語(yǔ)言匯編語(yǔ)言程序的特點(diǎn)匯編程序MASM的功能匯編語(yǔ)言程序框架第1頁(yè)/共87頁(yè)什么是匯編語(yǔ)言匯編語(yǔ)言(AssemblyLanguage)是利用指令的助記符、符號(hào)地址、標(biāo)號(hào)來(lái)編寫(xiě)的語(yǔ)言,它是機(jī)器語(yǔ)言的符號(hào)表示,是較低級(jí)的語(yǔ)言。匯編語(yǔ)言程序:用匯編語(yǔ)言編寫(xiě)的程序稱(chēng)為匯編語(yǔ)言程序,也稱(chēng)源程序,指令系統(tǒng)中的每條指令都是構(gòu)成源程序的基本語(yǔ)句。第2頁(yè)/共87頁(yè)匯編語(yǔ)言程序的特點(diǎn)可讀性差能夠直接控制硬件運(yùn)行速度快節(jié)省內(nèi)存第3頁(yè)/共87頁(yè)匯編程序MASM的功能匯編程序即微軟提供的MASM宏匯編程序,它具有如下的功能:檢測(cè)出源程序中的語(yǔ)法錯(cuò)誤,并給出出錯(cuò)信息,包括出錯(cuò)的行和錯(cuò)誤類(lèi)型;處理偽操作;產(chǎn)生源程序的目標(biāo)程序(obj文件),并可給出列表文件(lst文件)和crf文件;展開(kāi)宏指令。第4頁(yè)/共87頁(yè)匯編語(yǔ)言程序格式指令性語(yǔ)句偽指令語(yǔ)句數(shù)據(jù)項(xiàng)第5頁(yè)/共87頁(yè)指令性語(yǔ)句指令性語(yǔ)句與機(jī)器指令相對(duì)應(yīng),匯編程序?qū)⑺g成目標(biāo)代碼。指令性語(yǔ)句格式:[標(biāo)號(hào):]指令助記符操作數(shù)1,操作數(shù)2[;注釋]第6頁(yè)/共87頁(yè)標(biāo)號(hào)標(biāo)號(hào)表示本指令的符號(hào)地址,后面必須跟冒號(hào)“:”標(biāo)號(hào)使用的字符為字母、數(shù)字或某些特殊字母(@、_、?),第一個(gè)字符不能為數(shù)字,最大有效長(zhǎng)度為31個(gè)字符標(biāo)號(hào)可以省略標(biāo)號(hào)經(jīng)常作為轉(zhuǎn)移指令的一個(gè)操作數(shù),用來(lái)表示轉(zhuǎn)移的地址第7頁(yè)/共87頁(yè)指令助記符指令助記符表示該語(yǔ)句的指令名稱(chēng)的代表符號(hào)指令助記符指出指令的操作類(lèi)型,匯編程序?qū)⑵浞g成機(jī)器指令指令助記符是不能省略的第8頁(yè)/共87頁(yè)操作數(shù)操作數(shù)表示參加本指令運(yùn)算的數(shù)據(jù),根據(jù)指令要求可以有一個(gè)或多個(gè)操作數(shù),有的指令不需要操作數(shù),多個(gè)操作數(shù)之間用逗號(hào)“,”隔開(kāi)。操作數(shù)與指令助記符之間用空格隔開(kāi)。操作數(shù)可以是常數(shù)、變量、標(biāo)號(hào)、寄存器名和表達(dá)式第9頁(yè)/共87頁(yè)注釋注釋用來(lái)說(shuō)明一條指令或一段程序的功能注釋可以省略注釋前必須加上分號(hào)“;”匯編程序?qū)?;后面的?nèi)容不匯編使用注釋使程序容易讀懂第10頁(yè)/共87頁(yè)偽指令語(yǔ)句偽指令語(yǔ)句沒(méi)有對(duì)應(yīng)的機(jī)器指令,匯編程序可以對(duì)不同的偽指令作不同的處理,常見(jiàn)的有:數(shù)據(jù)定義,存儲(chǔ)區(qū)分配,段定義,段分配,過(guò)程定義,宏定義,指示程序結(jié)束等偽指令語(yǔ)句格式:[名字]偽指令指示符操作數(shù)1,操作數(shù)2[;注釋]第11頁(yè)/共87頁(yè)名字名字是給偽指令取的名稱(chēng),它用符號(hào)地址表示,后面不允許帶冒號(hào)。
名字可以省略偽指令中的名字可以是變量名、段名、過(guò)程名、符號(hào)名等第12頁(yè)/共87頁(yè)偽指令指示符偽指令指示符是匯編程序MASM規(guī)定的符號(hào),常用的有:變量定義語(yǔ)句DB、DW符號(hào)定義語(yǔ)句EQU、=段定義語(yǔ)句SEGMENT和ENDS段分配語(yǔ)句ASSUME過(guò)程定義語(yǔ)句PROC和ENDP匯編程序結(jié)束END第13頁(yè)/共87頁(yè)操作數(shù)操作數(shù)由偽指令具體要求的,有的偽指令不帶操作數(shù),有的偽指令可以帶多個(gè)操作數(shù),多個(gè)操作數(shù)用逗號(hào)隔開(kāi)。操作數(shù)可以是常數(shù)、變量、字符串和表達(dá)式,但不能為寄存器。第14頁(yè)/共87頁(yè)注釋注釋的功能和使用與指令性語(yǔ)句相同第15頁(yè)/共87頁(yè)數(shù)據(jù)項(xiàng)匯編語(yǔ)言中使用的操作數(shù)可以是常數(shù)、寄存器、存儲(chǔ)器、變量、標(biāo)號(hào)或表達(dá)式其中常量、變量和標(biāo)號(hào)是三種基本數(shù)據(jù)項(xiàng)第16頁(yè)/共87頁(yè)常量常量的值固定,不能改變,沒(méi)有屬性,是一個(gè)確定的數(shù)用二進(jìn)制表示時(shí),以B結(jié)束;以八進(jìn)制表示時(shí),以O(shè)或Q結(jié)束;用十進(jìn)制表示,以D結(jié)束,D也可以省略,也可以用科學(xué)記數(shù)法;用十六進(jìn)制表示,以H結(jié)束,當(dāng)十六進(jìn)制數(shù)以“A~E”的開(kāi)頭時(shí),前面必須加0常量也可以是字符串,字符串用單引號(hào)括起來(lái),在內(nèi)存中以字符的ASCII碼存放。第17頁(yè)/共87頁(yè)變量變量通常指存放在存儲(chǔ)單元中的值,在程序的運(yùn)行過(guò)程中,其值可以改變。變量具有以下三個(gè)屬性:段值(SEGMENT):指變量所在段的段基地址段內(nèi)偏移地址(OFFSET):指變量地址與所在段的段基地址之間的地址偏移字節(jié)數(shù)類(lèi)型(TYPE):指變量中每個(gè)元素所包含的字節(jié)數(shù),BYTE1WORD2DWORD4第18頁(yè)/共87頁(yè)標(biāo)號(hào)標(biāo)號(hào)是可執(zhí)行指令語(yǔ)句的地址的符號(hào)表示,它可以作為轉(zhuǎn)移指令的目標(biāo)操作數(shù),以確定程序轉(zhuǎn)向的目標(biāo)地址標(biāo)號(hào)具有三個(gè)屬性:段值(SEGMENT):指標(biāo)號(hào)所在段的段基地址段內(nèi)偏移地址(OFFSET):指標(biāo)號(hào)與所在段的段基地址之間的地址偏移字節(jié)數(shù)類(lèi)型(TYPE):指標(biāo)號(hào)在轉(zhuǎn)移指令中可轉(zhuǎn)移的距離。NEAR-1FAR-2,隱含的為NEAR屬性第19頁(yè)/共87頁(yè)MASM中的表達(dá)式表達(dá)式由運(yùn)算對(duì)象和運(yùn)算符組成,在匯編時(shí)由匯編程序?qū)λM(jìn)行運(yùn)算,運(yùn)算結(jié)果作為一個(gè)語(yǔ)句中的操作數(shù)。運(yùn)算對(duì)象可以是常數(shù)、變量和標(biāo)號(hào)運(yùn)算結(jié)果可以是一個(gè)常數(shù),也可以是一個(gè)存儲(chǔ)器的地址運(yùn)算符:在MASM中使用了6類(lèi)運(yùn)算符第20頁(yè)/共87頁(yè)MASM中的運(yùn)算符算術(shù)運(yùn)算符:+、-、*、/、MOD、SHL、SHR邏輯運(yùn)算符:AND、OR、XOR、NOT關(guān)系操作符:EQ、NE、LT、GT、LE、GE數(shù)值回送操作符:TYPE、LENGTH、SIZE、OFFSET、SEG修改屬性操作符:段操作符、PTR、THIS、SHORT、HIGH和LOW其他運(yùn)算符:圓括號(hào)()、方括號(hào)[]第21頁(yè)/共87頁(yè)算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括+、-、*、/、MOD(取模)、SHL(左移)、SHR(右移)算術(shù)運(yùn)算符均可以對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,運(yùn)算對(duì)象與運(yùn)算結(jié)果都是整數(shù)。若對(duì)地址運(yùn)算,通常是在標(biāo)號(hào)上加/減某一個(gè)數(shù)字量,對(duì)地址乘沒(méi)有意義第22頁(yè)/共87頁(yè)算術(shù)運(yùn)算符舉例見(jiàn)例4.2和4.3(說(shuō)明書(shū)上例子P129)第23頁(yè)/共87頁(yè)邏輯運(yùn)算符邏輯運(yùn)算符包括AND(與)、OR(或)、NOT(非)、XOR(異或)邏輯運(yùn)算符是按位運(yùn)算的,只能對(duì)常數(shù)進(jìn)行運(yùn)算,運(yùn)算結(jié)果也是常數(shù)注意:邏輯運(yùn)算符與邏輯指令助記符的區(qū)別:邏輯運(yùn)算符是在匯編過(guò)程中進(jìn)行計(jì)算的;而邏輯指令助記符是在程序執(zhí)行時(shí)進(jìn)行運(yùn)算的。第24頁(yè)/共87頁(yè)邏輯運(yùn)算符舉例見(jiàn)例4.4和4.5(說(shuō)明書(shū)上例子P129)第25頁(yè)/共87頁(yè)關(guān)系運(yùn)算符關(guān)系運(yùn)算符包括EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)關(guān)系運(yùn)算符的兩個(gè)操作數(shù)必須是數(shù)據(jù),或是同一個(gè)段內(nèi)的兩個(gè)存儲(chǔ)單元的地址。關(guān)系運(yùn)算的結(jié)果是一個(gè)數(shù)值,若結(jié)果為真,輸出全是1,即0FFH或0FFFFH;若結(jié)果為假,輸出全是0關(guān)系運(yùn)算符一般與邏輯運(yùn)算符組合起來(lái)使用第26頁(yè)/共87頁(yè)關(guān)系運(yùn)算符舉例見(jiàn)例4.6(說(shuō)明書(shū)上例子P130,糾正例子4.6)第27頁(yè)/共87頁(yè)數(shù)值回送操作符數(shù)值回送操作符也稱(chēng)為分析運(yùn)算符數(shù)值回送操作符包括OFFSET、SEG、TYPE、LENGTH、SIZE,它們加在變量或標(biāo)號(hào)前,返回運(yùn)算對(duì)象的某個(gè)參數(shù)值,例如:偏移地址值、段基地址值、類(lèi)型屬性、變量包含的單元數(shù)等第28頁(yè)/共87頁(yè)OFFSET和SEGOFFSET格式:OFFSETvariable或label說(shuō)明:回送變量或標(biāo)號(hào)的偏移地址SEG格式:SEGvariable或label說(shuō)明:回送變量或標(biāo)號(hào)的段基地址第29頁(yè)/共87頁(yè)TYPE格式:TYPEexpression或label說(shuō)明:如右表所示類(lèi)型返回值變量DB1DW2DD4DQ8標(biāo)號(hào)NEAR-1FAR-2第30頁(yè)/共87頁(yè)LENGTH格式:LENGTHvariable說(shuō)明:對(duì)于變量中使用DUP的情況,匯編程序?qū)⒒厮头峙湓撟兞康膯卧獢?shù)(而不是字節(jié)數(shù)),而對(duì)于其他情況則回送1第31頁(yè)/共87頁(yè)SIZE格式:SIZEvairable說(shuō)明:回送分配該變量的字節(jié)數(shù),是LENGTH和TYPE的乘積例子:4.64.74.84.94.10第32頁(yè)/共87頁(yè)修改屬性操作符修改屬性操作符也稱(chēng)為綜合運(yùn)算符修改屬性操作符有段操作符、PTR、THIS、HIGH、LOW、SHORT,在程序的運(yùn)行過(guò)程中,通過(guò)修改屬性運(yùn)算符來(lái)修改變量或標(biāo)號(hào)的屬性,包括段屬性、偏移地址屬性、類(lèi)型屬性等第33頁(yè)/共87頁(yè)段操作符格式:段前綴:變量或地址表達(dá)式說(shuō)明:段前綴有段寄存器CS、DS、ES、SS后跟冒號(hào),用來(lái)表示某個(gè)變量或地址被修改到哪個(gè)段寄存器提供的段基地址中第34頁(yè)/共87頁(yè)P(yáng)TR格式:類(lèi)型/距離PTR變量或標(biāo)號(hào)說(shuō)明:將PTR左邊的類(lèi)型屬性賦給右邊的變量或標(biāo)號(hào)。PTR本身并不分配存儲(chǔ)單元,僅給已分配的存儲(chǔ)單元賦予新的屬性,以保證運(yùn)算時(shí)操作數(shù)的類(lèi)型的匹配,常與類(lèi)型BYTE、WORD、NEAR、FAR等連用第35頁(yè)/共87頁(yè)HIGH和LOW格式:HIGH/LOW變量或標(biāo)號(hào)說(shuō)明:HIGH和LOW稱(chēng)為字節(jié)分離運(yùn)算符,對(duì)一個(gè)數(shù)或地址表達(dá)式,HIGH從中分離出高位字節(jié),LOW分離出地位字節(jié)。例子:4.16P133第36頁(yè)/共87頁(yè)4.2偽指令語(yǔ)句第37頁(yè)/共87頁(yè)4.2偽指令語(yǔ)句變量定義和存儲(chǔ)器分配偽操作標(biāo)號(hào)賦值偽操作EQU、=段定義偽操作段分配偽操作ASSUME模塊定義偽操作程序開(kāi)始和結(jié)束偽操作地址計(jì)數(shù)器$第38頁(yè)/共87頁(yè)4.2.1變量定義和存儲(chǔ)器分配偽操作格式:[Variable]MnemonicOprand,…,Oprand[;Comments]解釋?zhuān)篤ariable:變量,可有可無(wú)Mnemonic:助記符,DB,DW,DD,DQ…Oprand:操作數(shù)Comments:注釋?zhuān)捎锌蔁o(wú)第39頁(yè)/共87頁(yè)Oprand操作數(shù)操作數(shù)可以是常數(shù),或表達(dá)式操作數(shù)也可以是字符串?操作數(shù)復(fù)制操作符dup用地址表達(dá)式定義變量第40頁(yè)/共87頁(yè)操作數(shù)可以是常數(shù),或表達(dá)式寫(xiě)出下列變量在存儲(chǔ)器中的存儲(chǔ)狀況:DA1DB10H,52HDA2DW1122H,34HDA3DD5*20H,0FFEEH第41頁(yè)/共87頁(yè)操作數(shù)是字符串寫(xiě)出下列變量在存儲(chǔ)器中的存儲(chǔ)狀況:ONEDB‘HELLO’TWODB‘AB’THREEDW‘AB’第42頁(yè)/共87頁(yè)?操作數(shù)只分配存儲(chǔ)空間,不存入具體的數(shù)如:VALDB?MDW0F55H,?第43頁(yè)/共87頁(yè)復(fù)制操作符dup格式:repeat_countdup(oprand,…,oprand)說(shuō)明:repeat_count用來(lái)指定括號(hào)中的操作數(shù)的重復(fù)次數(shù)寫(xiě)出下列變量在存儲(chǔ)器中存儲(chǔ)狀況:Onedb5dup(0)Twodw10dup(?)Threedb4dup(1,2dup(20h))第44頁(yè)/共87頁(yè)地址計(jì)數(shù)器$$符號(hào)用在數(shù)據(jù)定義的偽操作中,表示的是當(dāng)前存儲(chǔ)單元的地址寫(xiě)出array變量的存儲(chǔ)狀況Arraydw1,2,$+6,3,4,$+6第45頁(yè)/共87頁(yè)4.2.2表達(dá)式賦值語(yǔ)句1.賦值偽操作EQU格式:symbol_nameEQUexpression功能:用來(lái)給變量、標(biāo)號(hào)、常數(shù)、指令或表達(dá)式等定義一個(gè)符號(hào)名,程序中用到EQU左邊的symbol_name可以用右邊的常數(shù)或表達(dá)式代替,但一經(jīng)定義在同一程序模塊中不能重復(fù)定義舉例,p137例4-25第46頁(yè)/共87頁(yè)4.2.2表達(dá)式賦值語(yǔ)句2.等號(hào)“=”語(yǔ)句等號(hào)語(yǔ)句=與EQU語(yǔ)句具有相同的功能,EQU偽操作中的符號(hào)名symbol_name是不允許重復(fù)定義的,而=偽操作則允許重復(fù)定義舉例:p138例4-26第47頁(yè)/共87頁(yè)4.2.3段定義偽操作格式:NameSEGMENT定位類(lèi)型組合類(lèi)型‘分類(lèi)名’………NameENDS說(shuō)明:定義一個(gè)邏輯段,SEGMENT和ENDS必須成對(duì)出現(xiàn),定位類(lèi)型、組合類(lèi)型和分類(lèi)名可以省略。第48頁(yè)/共87頁(yè)ASSUME偽操作格式:Assumecs:段名,ds:段名,es:段名,ss:段名指定某個(gè)段分配給哪個(gè)寄存器,它并不能把段地址存入段寄存器中,所以在代碼段中,還必須把段地址裝入相應(yīng)的寄存器中。(提示140內(nèi)容)如:
MOVAX,DATAMOVDS,AX
把數(shù)據(jù)段地址值裝入DS寄存器中第49頁(yè)/共87頁(yè)舉例:兩個(gè)16位無(wú)符號(hào)數(shù)相乘編輯源代碼定義數(shù)據(jù)段定義堆棧段定義代碼段匯編連接用debug查看結(jié)果第50頁(yè)/共87頁(yè)4.2.4模塊定義偽操作格式:Module_namePROC
Attribute…Module_nameENDP說(shuō)明:其中Attribute表示過(guò)程的屬性,F(xiàn)AR或NEAR,缺省為NEAR功能:定義一個(gè)過(guò)程,主程序可以用CALL指令調(diào)用第51頁(yè)/共87頁(yè)4.2.5程序開(kāi)始和結(jié)束偽操作NAME格式:NAME程序名功能:為源程序目標(biāo)模塊賦名字;若源程序中省略NAME偽操作,匯編程序?qū)⒃次募鳛槟繕?biāo)模塊的名字END格式:END標(biāo)號(hào)名功能:標(biāo)記匯編源程序結(jié)束,不可省略,放在源程序的最后一行,每個(gè)模塊只有一個(gè)END,匯編程序到END語(yǔ)句就停止匯編第52頁(yè)/共87頁(yè)4.2.7ORG偽操作格式:orgconstant_expression說(shuō)明:該偽操作可以使下一個(gè)字節(jié)的地址置為常數(shù)表達(dá)式constant_expression的值舉例DatasegmentOrg100hA1db10h,20h,30hOrg200hA2dw3031h,3233hDataends第53頁(yè)/共87頁(yè)對(duì)準(zhǔn)偽操作格式:EVEN功能:EVEN偽操作使下一語(yǔ)句的地址調(diào)整為偶地址。EVEN直接放在某一語(yǔ)句之前,匯編程序匯編時(shí)就會(huì)完成將地址調(diào)整在偶地址上例4.40P150第54頁(yè)/共87頁(yè)4.3DOS系統(tǒng)功能調(diào)用第55頁(yè)/共87頁(yè)4.3DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用是DOS為系統(tǒng)程序員及用戶(hù)提供的一組常用的子程序第56頁(yè)/共87頁(yè)DOS系統(tǒng)功能調(diào)用的使用方法在A(yíng)H寄存器中存入要調(diào)用功能的功能號(hào)根據(jù)調(diào)用功能的規(guī)定設(shè)置入口參數(shù)用INT21H指令轉(zhuǎn)入子程序入口相應(yīng)的子程序運(yùn)行完后,可以按規(guī)定取得返回參數(shù)第57頁(yè)/共87頁(yè)1.鍵盤(pán)輸入/輸出的DOS系統(tǒng)功能調(diào)用功能號(hào)功能入口參數(shù)返回參數(shù)01H從鍵盤(pán)上輸入一個(gè)字符無(wú)AL輸入字符的ASCII碼02H在屏幕上顯示一個(gè)字符DL輸出字符的ASCII碼無(wú)09H顯示字符串DS:DX串地址字符串以‘$’結(jié)束無(wú)0AH從鍵盤(pán)上輸入一個(gè)字符串DS:DX緩沖區(qū)首地址(DS:DX)緩沖器最大字符數(shù)(DS:DX+1)實(shí)際輸入的字符數(shù)第58頁(yè)/共87頁(yè)例:從鍵盤(pán)上輸入一個(gè)字符從鍵盤(pán)上輸入一個(gè)字符,并判斷該字符的種類(lèi):數(shù)字、大寫(xiě)字母、小寫(xiě)字母和其他字母第59頁(yè)/共87頁(yè)例:在屏幕上顯示一個(gè)字符在屏幕上顯示字符‘@’通過(guò)鍵盤(pán)輸入一個(gè)字符,并從屏幕上顯示的他后續(xù)字符。顯示回車(chē)換行第60頁(yè)/共87頁(yè)例:從鍵盤(pán)上輸出一個(gè)字符串輸出hellowworld!注意兩點(diǎn):(1)輸出的字符串放到數(shù)據(jù)段中(2)字符串必須以’$’結(jié)束第61頁(yè)/共87頁(yè)例:從鍵盤(pán)上輸入一個(gè)字符串輸入hellowworld!注意兩點(diǎn):(1)預(yù)先定義輸入緩沖區(qū)。(2)第一個(gè)緩沖區(qū)指出緩沖區(qū)的總大小,有用戶(hù)直接指定(3)第二個(gè)是實(shí)際字符數(shù)目,系統(tǒng)自動(dòng)設(shè)(4)從第三個(gè)字節(jié)開(kāi)始接受字符,直到回車(chē)鍵結(jié)束。第62頁(yè)/共87頁(yè)例:從鍵盤(pán)上輸入一個(gè)字符串Bufdb100db?db100dup(?)Movdx,offsetbufmovah,0AhInt21h輸入一個(gè)字符串,并顯示在屏幕上。第63頁(yè)/共87頁(yè)2.(1)日期和時(shí)間的設(shè)置P159功能號(hào)功能入口參數(shù)返回參數(shù)2BH設(shè)置日期CX:年DH:月DL:日AL=0成功AL=0FFH失敗2DH設(shè)置時(shí)間CH:時(shí)CL:分DH:秒DL:1/100秒AL=0成功AL=0FFH失敗第64頁(yè)/共87頁(yè)2.(1)日期和時(shí)間的獲取P160功能號(hào)功能入口參數(shù)返回參數(shù)2AH取得日期CX:年DH:月DL:日2CH取得時(shí)間CH:時(shí)CL:分DH:秒DL:1/100秒第65頁(yè)/共87頁(yè)時(shí)間獲取的應(yīng)用測(cè)定一段程序的運(yùn)行時(shí)間產(chǎn)生延時(shí)產(chǎn)生隨機(jī)數(shù)第66頁(yè)/共87頁(yè)4.4程序設(shè)計(jì)方法第67頁(yè)/共87頁(yè)4.4程序設(shè)計(jì)方法順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)子程序結(jié)構(gòu)第68頁(yè)/共87頁(yè)4.4.1順序結(jié)構(gòu)概述:程序順序執(zhí)行,無(wú)分支,無(wú)循環(huán)舉例:內(nèi)存中TABLE開(kāi)始的存儲(chǔ)單元中存放0~9的平方值,從鍵盤(pán)上任意輸入一個(gè)0~9之間的數(shù)X,查表得該數(shù)的平方,并輸出。分析:①鍵盤(pán)輸入;②A(yíng)SCII碼數(shù)字;③查表第69頁(yè)/共87頁(yè)4.4.2分支結(jié)構(gòu)概述:在程序的執(zhí)行過(guò)程中,經(jīng)常要求程序根據(jù)不同條件選擇不同的處理方法分支程序設(shè)計(jì)舉例第70頁(yè)/共87頁(yè)分支程序設(shè)計(jì)舉例1從鍵盤(pán)上輸入一個(gè)字符串,存入首地址為string的緩沖區(qū)忠,字符串長(zhǎng)度n小于256,要求分別計(jì)算其中的數(shù)字‘0’~‘9’,小寫(xiě)字母,大寫(xiě)字母和其他字符的個(gè)數(shù),并分別將這三個(gè)數(shù)存入三個(gè)存儲(chǔ)單元中分析:①正確定義緩沖區(qū)用于存放輸入的字符串;②從鍵盤(pán)上輸入字符串;③統(tǒng)計(jì)字符第71頁(yè)/共87頁(yè)分支程序設(shè)計(jì)舉例2設(shè)有首地址為BUFFER的數(shù)組,已按升序排好,長(zhǎng)度為10,在該數(shù)組中查找關(guān)鍵字,若找到則從數(shù)組中刪除;若找不到,則將它插入到合適的位置第72頁(yè)/共87頁(yè)4.4.3循環(huán)結(jié)構(gòu)概述:重復(fù)執(zhí)行某一程序段若干次,直到滿(mǎn)足一定的條件為止循環(huán)程序結(jié)構(gòu)包括四個(gè)部分:初始化:設(shè)置循環(huán)次數(shù),設(shè)置變量的初始值循環(huán)體:循環(huán)結(jié)構(gòu)中反復(fù)執(zhí)行的部分參數(shù)的修改:修改操作數(shù)的值循環(huán)控制:修改循環(huán)次數(shù),判斷循環(huán)控制條件,決定是否推出循環(huán)循環(huán)程序設(shè)計(jì)舉例第73頁(yè)/共87頁(yè)例1:循環(huán)程序設(shè)計(jì)BX中的16進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼,存放到BUF開(kāi)始的內(nèi)存單元中去,并在屏幕上顯示數(shù)值,例如:BX=12ABH,則在屏幕上12AB分析:①BX中4位十六進(jìn)制數(shù)如何分離;②數(shù)字如何轉(zhuǎn)換為ASCII碼;③ASCII碼的顯示;④流程圖第74頁(yè)/共87頁(yè)①BX中4位16進(jìn)制數(shù)如何分離設(shè)置一個(gè)循環(huán)計(jì)數(shù)器CH,CH初始值為4,表示BX中的4位16進(jìn)制數(shù)分4次顯示,每次顯示一位;設(shè)置移位位數(shù)計(jì)數(shù)器CL,CL初始值為4,表示每次循環(huán)移位的二進(jìn)制位數(shù)為4(因?yàn)橐晃?6進(jìn)制數(shù)由4位二進(jìn)制組成);由于在屏幕上顯示的時(shí)候,最高位最先顯示,然后再顯示次最高位,最后顯示最低位,顯示的順序是從左到右,所以采用循環(huán)左移的方法,把最高位移到最低位(最右邊),然后屏蔽其他3位,把最低位轉(zhuǎn)換為ASCII碼后在屏幕上顯示。第75頁(yè)/共87頁(yè)②數(shù)字如何轉(zhuǎn)換為ASCII碼由于16進(jìn)制數(shù)有兩種情況:①在0~9范圍內(nèi);②在A(yíng)~F之間。如果是第一種情況,則轉(zhuǎn)換為0~9的ASCII碼需要加上30H如果是第二種情況,則轉(zhuǎn)換為A~F的ASCII碼需要加上37H第76頁(yè)/共87頁(yè)③ASCII碼的顯示功能號(hào)為2,2AH要顯示字符的ASCII碼DL調(diào)用DOS中斷第77頁(yè)/共87頁(yè)④流程圖開(kāi)始設(shè)置循環(huán)計(jì)數(shù)CH=4設(shè)置移位計(jì)數(shù)CL=4BX循環(huán)左移CL位取出最右邊的數(shù)位在0~9范圍內(nèi)嗎加上30H加上37H在屏幕上顯示CHCH-1CH=0結(jié)束是是否否第78頁(yè)/共87頁(yè)例2:循環(huán)程序設(shè)計(jì)從鍵盤(pán)上輸入一個(gè)小于4位16進(jìn)制數(shù),將其存放在A(yíng)X中例如:輸入1234HAX中為4660D(1234H)如果從鍵盤(pán)上輸入一個(gè)小于5位10進(jìn)制數(shù),將其存放在A(yíng)X中例如:輸入1000A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)注學(xué)習(xí)態(tài)度審計(jì)師試題及答案
- 2024年初級(jí)審計(jì)師考試沖刺秘籍試題及答案
- 中級(jí)會(huì)計(jì)考試高效復(fù)習(xí)試題及答案
- 22025年護(hù)師考試適應(yīng)能力試題及答案
- 外語(yǔ)能力提升的社會(huì)環(huán)境分析試題及答案
- 備考時(shí)光的消防試題及答案指導(dǎo)
- 中級(jí)審計(jì)師備考期間的心理調(diào)整與試題及答案
- 2024年航空器維修理論知識(shí)試題及答案
- 22025年護(hù)師考試鞏固知識(shí)試題及答案
- 中級(jí)會(huì)計(jì)技能2025年試題及答案
- 初中物理競(jìng)賽練習(xí)題集(共14講)含答案
- 2024年江蘇省南京市聯(lián)合體中考三模英語(yǔ)試題(解析版)
- 220kV電力系統(tǒng)繼電保護(hù)及自動(dòng)裝置設(shè)計(jì)
- 四年級(jí)數(shù)學(xué)脫式計(jì)算練習(xí)題100道
- 創(chuàng)新與發(fā)明-按圖索驥、循章創(chuàng)新智慧樹(shù)知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 《24時(shí)計(jì)時(shí)法》素養(yǎng)課件
- 2024年山東高考化學(xué)真題試題(原卷版+含解析)
- 3.1.4 禁止編入列車(chē)的機(jī)車(chē)車(chē)輛課件講解
- 30題儀表工程師崗位常見(jiàn)面試問(wèn)題含HR問(wèn)題考察點(diǎn)及參考回答
- 電力安全工作規(guī)程發(fā)電廠(chǎng)和變電站電氣部分
- 數(shù)字貿(mào)易學(xué) 課件 第5章 數(shù)字服務(wù)貿(mào)易
評(píng)論
0/150
提交評(píng)論