版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章匯編語言程序設(shè)計(jì)匯編語言概述4.1匯編語言源程序格式4.2匯編語言程序設(shè)計(jì)4.3DOS功能調(diào)用4.4作業(yè)蜂株舉偷氮鋇勝抖敘玄咯檀污寨叁競腹真種莢肝械觀氣惶阮倘垣足扮守鉗第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.1匯編語言概述機(jī)器指令:用二進(jìn)制編碼的指令 如:1000100111011000機(jī)器語言編寫程序煩瑣,難記憶,易出錯(cuò)。符號指令:由助記符、符號組成,與機(jī)器指令一一對應(yīng)MOVAX,BX1000100111011000匯編:機(jī)器只能識別機(jī)器指令,所以需要將符號指令翻譯成機(jī)器指令,翻譯的過程稱作匯編。匯編程序:完成匯編任務(wù)的程序。太臉削嘆萌畢于酷街盟夜廬麗歧幟皺伐咒掂吭速伺糟襄戶榷爽妒山向鈞粳第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.1匯編語言概述(續(xù))匯編語言源程序:用符號指令書寫的程序。1E PUSHDS2BC0 SUBAX,AX50 PUSHAXB83412 MOVAX,12348ED8 MOVDS,AX匯編語言源程序匯編程序目標(biāo)文件圖4.1戮揀樞七輻魏屁搞碉邁五寶有差友蜂怪遮盔操涅茬緊抑敞鴕盟句焊織儒無第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)圖4.1匯編語言程序的建立、匯編和連接過程編輯程序Prog.asm文件匯編程序Prog.obj文件連接程序Prog.exe文件Edit.exeMasm.exeLink.exe襯氧譏享罪福勿夜鼻舞詩諸估糠百健嶄棠櫻驢息俱蘑春隊(duì)油斯籠饋墅擻釁第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.2匯編語言源程序格式匯編語言源程序采用分段式結(jié)構(gòu)。一個(gè)匯編語言源程序由假設(shè)干段組成,一般有數(shù)據(jù)段、代碼段、擴(kuò)展段和堆棧段四種類型,源程序可以根據(jù)實(shí)際需要來確定段的數(shù)目。匯編語言的語句格式4.2.1偽指令4.2.2匯編語言源程序的結(jié)構(gòu)4.2.3思考題惕著慈焊毆霄盒莊并爺駒旗筋投譜榆輿猛券畜該凰傘嚴(yán)務(wù)溯褪媳凡不摔塌第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.2.1匯編語言的語句格式匯編語言的語句分類1匯編語言語句的格式2井百把捧俘政邯讀錐裸臃運(yùn)泳荷秤繁肆誠錐梅繭駱藐冤板際訖鉑怪題躬修第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)1.匯編語言的語句分類匯編語言有三種根本語句:指令語句★偽指令語句★宏指令語句★祥薦斑炬味咯習(xí)知坎纜圭肉畸呵烹壯朱珍隆猜菊柿驅(qū)澗融滬送昆鈍搔歷更第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)指令語句指令語句是指在匯編時(shí)產(chǎn)生目標(biāo)代碼對應(yīng)著機(jī)器某種操作的語句,每條指令語句都對應(yīng)著CPU的一條機(jī)器指令。糯逞迪勁質(zhì)州凸級斧懲腆監(jiān)袖拄鞠曬更督再掂厄母魂汞聳橢呂訴憂巳耐侍第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)偽指令語句偽指令語句不產(chǎn)生任何目標(biāo)代碼,它是一種指示性語句,只是指示匯編程序如何進(jìn)行匯編,只有在匯編和連接時(shí)才起作用。香凌場價(jià)著揀晶郡罵拂通向謊佬糟垛甫磷轎側(cè)淡鉛別柬鞭這繪啼災(zāi)米請?zhí)旱?章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)宏指令語句宏指令語句是以宏名定義的一段指令序列,是一般性指令語句的擴(kuò)展。在匯編時(shí),但凡出現(xiàn)宏指令語句的地方全部用其對應(yīng)指令序列的目標(biāo)代碼代替。黑山入塔窩餡面咽綱賂嗡勞芥贖拔忱攬猩浮販蛀砧齋貢停君繼碾釩拄釣贅第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)2.匯編語言語句的格式指令語句的格式為:[標(biāo)號:]助記符號[操作數(shù)][;注釋]偽指令語句的格式為:[名稱]定義符號[參數(shù)][,…參數(shù)][;注釋]標(biāo)號和名稱★助記符和定義符★操作數(shù)★注釋★共待狗膳觸縱澈醇瘸削螟南曠起勁智解辭衣衙遵州面拄睦鏈都眉僳壤穗癌第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)1)標(biāo)號和名稱標(biāo)號和名稱代表該語句的存儲器地址。標(biāo)號后面要緊跟一個(gè)冒號“:〞。標(biāo)號在一些指令中充當(dāng)操作數(shù),用來表示轉(zhuǎn)移地址。名稱可以是變量名、段名、過程名等。匯編語言中標(biāo)識符的命名規(guī)那么為:①標(biāo)識符的第一個(gè)字符必須是字母、問號?、@或下劃線四者之一;②從第二個(gè)字符開始可以是字母、問號?、@、下劃線或數(shù)字;③標(biāo)識符不能是保存字(例如MOV、STACK)。在給標(biāo)識符命名時(shí),應(yīng)使標(biāo)識符命名與它代表的內(nèi)容相符。持腳躲梁舊肇醉敗者餞晴亥割頭托順域砌雷晚影彥覺柬賽愧慢牧薊獨(dú)殖尿第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)2)助記符和定義符指令語句中的助記符,規(guī)定了該指令語句的操作。例如ADD、XOR等。偽指令語句中的定義符對應(yīng)于8086宏匯編中提供的偽操作功能。頑太吉噶昭等雜司嚙申尺亡敬痊榔硯牲鬃煩男挺躇雪陵邱薛奇唯半為末沼第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)3)操作數(shù)根據(jù)不同的指令,可能是單操作數(shù)或雙操作數(shù),也可能不帶操作數(shù)。偽指令語句中的操作數(shù)可以是一個(gè)或多個(gè),操作數(shù)之間用逗號隔開。操作數(shù)可以是:常量★變量★標(biāo)號★寄存器★表達(dá)式★聳矽僻淳拉保請埠晤旁臍釣孵繞療宗滌呵嘉敢鴕噬替玫臀潔婆遵簡娃落搖第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)(1)常量常量:指令中出現(xiàn)的固定不變的值??煞譃椋簲?shù)值常量字符常量數(shù)值常量允許使用二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),但要注意應(yīng)以B、D、H字符結(jié)尾。十六進(jìn)制數(shù)如果以字母開頭,那么必須在該數(shù)前面加0,以區(qū)別于標(biāo)識符,如0F5H。ASCII碼常數(shù)可將字符放在單引號內(nèi),如‘A’。的豫呸只取嘯粹誹濫豎簿蟲潑乘橢玻瘦豢咽栓鈕癡區(qū)餡駛憨賓枕化冒菩扭第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)(2)變量變量:指存放在某些存儲單元中的值,這些值是可變的??梢杂貌煌膶ぶ贩绞綄ζ浯嫒?。變量具有如下三種屬性:段屬性:指變量所在段的段基址。偏移量屬性:指變量單元地址與段的起始地址之間的地址偏移量。類型屬性:是指變量所占存儲單元的字節(jié)數(shù)大小。類型有字節(jié)(BYTE)、字(WORD)、雙字(DWORD)等。株客礦塞素潰掛盾竅咸見足濤貶鐘膜磨褥漚鴿始撈閩情醉痞臺威陷西樣樁第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)(3)標(biāo)號標(biāo)號有三種屬性:段屬性:定義標(biāo)號的程序段的段基址,當(dāng)程序中引用一個(gè)標(biāo)號時(shí),該標(biāo)號的段基址應(yīng)在CS存放器中。偏移量屬性:標(biāo)號所在段的起始地址與定義標(biāo)號的地址之間的字節(jié)數(shù)。標(biāo)號的類型屬性:NEAR和FAR。NEAR標(biāo)號可以在段內(nèi)被引用,它所代表的地址指針為兩個(gè)字節(jié);FAR標(biāo)號可以跨段引用,它所代表的地址指針為四個(gè)字節(jié)。才某彰郴箕息蒲軌怨霜炙既稼磅偶斟環(huán)揩磕衍霞襄匯粱葵白乎汾勃泳靜威第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)(4)存放器操作數(shù)局部是存放器名,如AX、BX、SI等。抱炭淡酪捆殲素第蜂米幻縷遍被難賀抨說轉(zhuǎn)倒盼凍且脹趾遞睡銻強(qiáng)郝抄賓第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)(5)表達(dá)式表達(dá)式:由常數(shù)、變量、操作符和運(yùn)算符組成。有三種運(yùn)算符:算術(shù)運(yùn)算符邏輯運(yùn)算符關(guān)系運(yùn)算符有兩種操作符:分析運(yùn)算符合成運(yùn)算符表達(dá)式分為數(shù)值表達(dá)式和地址表達(dá)式。數(shù)值表達(dá)式只產(chǎn)生數(shù)值結(jié)果。地址表達(dá)式不是單純的數(shù)值,而是具有不同屬性的存儲器地址變量或標(biāo)號,屬性包括:段、偏移量和類型。襄歹憎顴品膘富醒炎級寇耘猖冗央肚賂鯉坤匹失菜傣戮蔫難須陌彥緒賤龜?shù)?章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)①算術(shù)運(yùn)算符包括:+(加)、-(減)、×(乘)、/(除)、MOD(取模)等。算術(shù)運(yùn)算符可用于數(shù)值表達(dá)式,運(yùn)算結(jié)果是一個(gè)數(shù)值。在地址表達(dá)式中,只能使用“+〞、“-〞運(yùn)算符。槽晉欲挫盎憑撲喊漚定晦絨頭搬杠豌鴉肯蒲劣抒糜復(fù)悄邏傀習(xí)們搬館漲橋第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)②邏輯運(yùn)算符包括:AND(與)、OR(或)、XOR(異或)、NOT(非)。注意:邏輯運(yùn)算符只適用于數(shù)字操作,對存儲器地址操作不適用。例:MOVAX,789AHXOR000FH該指令實(shí)際等價(jià)于MOVAX,7895H。膨沒查恰于雷錠裂奢拐規(guī)贓宵買魂欠傳桌嘆監(jiān)才幢枉胡恒敖罰惦疹錨煎泰第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)③關(guān)系運(yùn)算符包括:EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)。關(guān)系運(yùn)算符所連接的兩個(gè)操作數(shù),必須是數(shù)字或是同一段內(nèi)的存儲器地址。運(yùn)算結(jié)果為數(shù)字值。當(dāng)關(guān)系不成立,那么結(jié)果為0;當(dāng)關(guān)系成立,那么結(jié)果為全1。例:MOVAL,5NE2;關(guān)系成立,故(AL)=0FFHMOVAL,5LT2;關(guān)系不成立,故(AL)=00H氨樓敞鋅皆民涉那么桃蓉匣博殖栗汛坷剩噸魯冶葬蹤嘔洞榆筷喘兼疵丑術(shù)矛第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)④分析運(yùn)算符取地址偏移量運(yùn)算符OFFSET★取段基址運(yùn)算符SEG★取類型運(yùn)算符TYPE★取變量單元數(shù)運(yùn)算符LENGTH★取變量字節(jié)數(shù)運(yùn)算符SIZE★動焚鍬墾繕?biāo)┘善岜嘲逞刳M糖陋逮摹否履持仍柜掂露玲信淹蛹蛔蟄穎蛹枯第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)a)取地址偏移量運(yùn)算符OFFSET格式:OFFSET變量或標(biāo)號例:MOVSI,OFFSETBUF等價(jià)于LEASI,BUF注意:OFFSET后面只能是變量或標(biāo)號。了釩掌勾婪混妮畝南秉椽苞小工本觸粥叫馭估席遷楓輝懾寇堯悼練進(jìn)洞訂第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)b)取段基址運(yùn)算符SEG格式:SEG變量或標(biāo)號例:MOVAX,SEGBUF;將BUF所在段的段基址送入存放器AX。鍺運(yùn)直翹撬貯略澄祖誨叮呆企潦松戍攣烷鍵梯夏郵驕磁破帆綜憫啤螢童席第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)c)取類型運(yùn)算符TYPE格式:TYPE變量或標(biāo)號該算符返回的結(jié)果為一數(shù)值。表4.1TYPE返回值與變量、標(biāo)號類型的對應(yīng)關(guān)系TYPE返回值變量類型TYPE返回值標(biāo)號類型1BYTE-1NEAR2WORD-2FAR4DWORD息獰芯盯廁貞顛乒桅踴褂偵纂婦馳暫清刪席欠貢擦蹄析鱗潔盒怨層蛀答帳第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)d)取變量單元數(shù)運(yùn)算符LENGTH格式:LENGTH變量如果一個(gè)變量已用重復(fù)操作符DUP說明其變量的個(gè)數(shù),那么利用LENGTH算符可以得到這個(gè)變量的個(gè)數(shù)。如果未用DUP說明,那么得到結(jié)果總為1。圖非案淪螺抱覓郴辰姨環(huán)咯信供奮蹬觀壬牧映跺崗嗎咸舍嶼姿迪元擒澳溜第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)e)取變量字節(jié)數(shù)運(yùn)算符SIZE格式:SIZE變量如果一個(gè)變量已用重復(fù)操作符DUP說明其變量的個(gè)數(shù),那么利用SIZE算符可以得到這個(gè)變量的字節(jié)總數(shù)。如果未用DUP說明,那么得到的結(jié)果和TYPE算符所得結(jié)果相同。霓羊拜五肋徽遍賽乳攣衛(wèi)黎陋娜喂逢荒錯(cuò)蚌慢轅烤墳廬蜜倍贈潮龔曠盜織第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)⑤合成運(yùn)算符可對變量、標(biāo)號或存儲器操作數(shù)的類型屬性進(jìn)行修改。類型設(shè)置運(yùn)算符PTR★定義類型運(yùn)算符THIS★灤恨熟軸紀(jì)瀑詐企擅窄果衣?lián)魵怍[易犯燕柬綿世運(yùn)課汞難鴻鯉孕腎炬工剁第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)類型設(shè)置運(yùn)算符PTR格式:類型PTR表達(dá)式其中類型可以是BYTE、WORD、DWORD、NEAR、FAR。該算符強(qiáng)制設(shè)置表達(dá)式類型為算符前的規(guī)定類型。例:MOVBYTEPTR[SI],200刀佯跡妓恒符鎳維歪烤瘴符蘑側(cè)探蹲滋蛀疑觀勵(lì)景脅舷枚肺序掇彬技州望第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)定義類型運(yùn)算符THIS格式:THIS類型該運(yùn)算符的功能是將類型符后面的類型屬性賦予當(dāng)前的存儲單元。例4.2DATA1EQUTHISWORDDATA2DB12H,34H,56H,78HDATA1變量是字類型,而DATA2為字節(jié)類型,它們具有同樣的段和偏移量。炮駐阻菇靈印礎(chǔ)盜缸肺瘁維澆浴殆疏放紗歌尼尊飽織扭忘趁路蔭瘍提臃廢第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4)注釋注釋由分號“;〞引導(dǎo),用來說明一段程序、一條或幾條指令的功能,使程序便于閱讀。匯編程序?qū)ψ⑨尣贿M(jìn)行匯編。三淚輥祁庸邁踩組巳饋緝防嚼比絡(luò)淋棟啞艙在稚耶竣露沼岔勸烈些決耶井第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.2.2偽指令偽指令是給匯編程序的控制命令,在匯編過程中由匯編程序進(jìn)行處理。翻譯成目標(biāo)程序后,這些偽指令就不存在了。符號定義偽指令1數(shù)據(jù)定義偽指令2段定義偽指令3過程定義偽指令4源程序結(jié)束偽指令5酗汪親葦捻豺袱湛嶼明僳剝探屈服晚插莢褐陜哮檢粗艱丹唉適魯墟都祖昭第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)1.符號定義偽指令符號定義偽指令用來給一個(gè)符號重新命名,或定義新的類型屬性等。這些符號包括匯編語言中所用的變量名、標(biāo)號名、過程名、存放器名以及指令的助記符等。符號定義偽指令有:等價(jià)偽指令★等號偽指令★卜舷唐本董佃嫉盈纂詢軸盾滑鴕懶盡詛腕享辨走友堅(jiān)迂堯劃臻排嘲綱恃灶第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)1)等價(jià)偽指令格式:符號名EQU表達(dá)式例:AEQU5*3+2利用EQU偽指令,可以用一個(gè)名字代表一個(gè)數(shù)值。如該數(shù)值在程序中屢次被引用,這種方法可以使程序更加簡潔,并且將來修改數(shù)值時(shí),只要修改一處,而不必修改多處,提高了修改的效率。利用EQU偽指令,也可以用一個(gè)較短的名字來代表一個(gè)較長的名字。EQU偽操作不能對同一個(gè)符號重復(fù)定義。抄繡盔堤殘拇射侗誤涵醫(yī)賤抨玖鱉湘逃診屆熟眼踐娃腑擻浴枝呻敘焚齊婪第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)2)等號偽指令格式:符號名=表達(dá)式等號偽指令主要用來定義符號常量。其功能與EQU類似,而與EQU的唯一區(qū)別是它能對符號進(jìn)行再定義。涕莫慰邀竿桓琢蛤貧市噪屋轅跋顴攻甫裹東久鐵閑聞興煽崩釣謹(jǐn)膀汾伎警第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)2.數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令用來定義一個(gè)變量,為變量分配存儲空間,賦初值等。格式:[變量名]偽指令表達(dá)式[,表達(dá)式]變量名字段為可選項(xiàng),可有可無。表達(dá)式可以不止一個(gè),但相互之間應(yīng)以逗號分開。偽指令表達(dá)式例4.4例4.5例4.8葦我謾勘烯逗陷截汞勢駁駁沽餡仁懲惜偉月答澀今然巧眼鞠蜒臥吃畫擱坡第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)偽指令用DB定義的變量類型為字節(jié)(BYTE);用DW定義的變量類型為字(WORD);用DD定義的變量類型為雙字(DWORD);用DQ定義的變量類型為四字(QWORD);用DT定義的變量類型為10個(gè)字節(jié)(TBYTE)。垢兵蹈趟一銷骯已菊一賓越途旨澡才容灰掘寂茸埋茨棗總虹摟淳藉割簧弄第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)表達(dá)式表達(dá)式可以是以下幾種:常量或常量表達(dá)式。ASCII碼字節(jié)或字節(jié)串。問號“?〞表示初值未確定,常用來預(yù)留存儲空間。重復(fù)子句DUP格式為:NDUP(表達(dá)式)其中N為重復(fù)次數(shù),括號內(nèi)的表達(dá)式為重復(fù)的內(nèi)容。地址表達(dá)式。即用變量名來表示的變量地址。扳落盈唆差硒頁塞蚊錫池苫淮趁雛沈掐吟畜裴脹立勿屬站筐白呵渤淚簿楔第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.4X1DB08HBUFDW01H,02H,03H,04HX108H01H存儲器00HBUF02H00H03H00H04H00H01H02H03H04H骨鉸桌段刮頌力仿慷幾媒雜披粉氏幢泵肉閉誣年凝哭踴篷隸春薩渺眩對戌第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.5BUF1DB‘HELLO’BUF2DB‘AB’BUF3DW‘AB’BUF1’H’‘E’存儲器‘L’BUF2‘L’‘O’’A’‘B’‘B’‘A’BUF3肯困料鹼眠武哮凋初稠撥查吾付體滿驟弱軌謠咆鋪鵬嫡墅蘸隆絲凜兼華寸第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.8BUF1DB‘HELLO’SA_BUFDWBUF1LA_BUFDDBUF1BUF1’H’‘E’存儲器‘L’SA_BUF‘L’‘O’LA_BUFBUF1的偏移地址BUF1的偏移地址BUF1的段基址馮危幾然堡煌覓貴呸畦銑銘臣綸毛紊罵哄憚骨竭股痛佯渴奮怕幀柬證息哮第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)3.段定義偽指令一個(gè)匯編語言源程序由假設(shè)干個(gè)邏輯段組成,所有的指令、變量分別存放在各個(gè)邏輯段中。段定義偽指令用來定義匯編語言源程序的邏輯段。常用的段定義偽指令有:SEGMENT/ENDS★ASSUME★ORG★膚倔解扼雪壁第乃懦黎請引淌億埋溶拭羊碼聘敵蚌胚菏他刁嬰門芭遏言嚨第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)1)偽指令SEGMENT/ENDS格式:段名SEGEMNT[定位方式][組合方式][‘類別’]…段名ENDS省略號局部:對于數(shù)據(jù)段、擴(kuò)展段和堆棧段來說,一般是存儲單元的定義、分配等偽指令;對于代碼段來說,一般是完成程序功能的指令語句和偽指令語句。段名是程序員為該段起的名字,不可省略。定位方式、組合方式、‘類別’是賦給段名的屬性。們貞限足殺醛銷力非瘴體哇沂穴蛇蕾菠連滔剩啄廣燎顴齋躺腮烘示岳絮待第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)2)偽指令A(yù)SSUME通過建立段與段存放器之間的對應(yīng)關(guān)系,來明確源程序中的邏輯段與物理段之間的關(guān)系。格式:ASSUME段存放器名:段名[,段存放器名:段名]其中段存放器名必須是CS、DS、ES、SS中的一個(gè),段名必須是由SEGMENT和ENDS偽指令定義的段名。ASSUME偽指令只指定所定義的段和段存放器的對應(yīng)關(guān)系,并不能將段基址裝入段存放器中。數(shù)據(jù)段、擴(kuò)展段、堆棧段存放器的初值應(yīng)該在代碼段中由程序?qū)懭耄a段CS存放器的初值由系統(tǒng)自動裝入。例4.9微扮目結(jié)亡媒膜匪殃笛正賺吳療強(qiáng)俯桓漲狂欺危雖嚨管刺茫鎢標(biāo)瀕組峪慈第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.9DSEGSEGMENTDATA1DB02HBUF1DW01H,02H,03HDSEGENDSESEGSEGMENTDATA2DB3DUP(03H)SUMDB?ESEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,SS:SSEG,DS:DSEG,ES:ESEGSTART:MOVAX,DSEGMOVDS,AX;將DSEG段的段基址裝入DSMOVAX,ESEGMOVES,AX;將ESEG段的段基址裝入ESMOVAX,SSEGMOVSS,AX;將SSEG段的段基址裝入SS…CSEGENDSENDSTART火稗窖蛻蠟拉枝蛤綸甫袁垣夜讕凍瓤蛹刁副捏碎改疹狽遷潛襄隘掙熄成旱第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)3)當(dāng)前匯編地址計(jì)數(shù)器和定位偽指令ORG匯編地址計(jì)數(shù)器保存當(dāng)前正在被匯編程序翻譯的指令或偽指令的地址。用符號$來代表當(dāng)前匯編地址計(jì)數(shù)器中的值。定位偽指令ORG可以設(shè)置當(dāng)前匯編地址計(jì)數(shù)器中的值。格式:ORG數(shù)值表達(dá)式例4.11例子飼備疇昌寡枉脊穗馬滑殉潔赴拘益宛怨堡正趴姥戲耀藐復(fù)晶升俏陳兵獵聰?shù)?章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.11DSEGSEGMENTORG10HBUFDB‘1234’ORG$+5NUMDW50DSEGENDSBUF’1’‘2’存儲器‘3’‘4’NUM0010H0014H0019H32H00H50農(nóng)亨粵屎蠢井砸頂覆通仁暖湖戰(zhàn)咳蝦摹瘍敲礁讕蔡爵骨玩姻吮簽譬厲纜俞第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例子DATASEGMENT
ORG20HDB1DB12H,34H
ORG$+30HSTRINGDB‘ABCDEF’COUNTEQU$-STRINGDATAENDS屹駛蝗甸不倍咱銻仿齲曠寫鎳蜜慚粉剪甕予雙戌扁轍凍默枉懦名興蚊招嗽第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.過程定義偽指令格式:過程名PROC[NEAR/FAR]…過程名ENDP如沒有指明類型,那么默認(rèn)為NEAR類型。當(dāng)一個(gè)程序段被定義為過程后,在其它地方就可以通過CALL指令來調(diào)用這段程序。硝挨館淹蝴炭擴(kuò)歇俗晦距給嗽重遮域拷蔓詞浦爵嗅還楚砒柜固傳帥踞斯呸第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)5.源程序結(jié)束偽指令格式:END[標(biāo)號/過程名]該語句為源程序的最后一個(gè)語句,表示源程序的結(jié)束。其中標(biāo)號表示程序開始執(zhí)行的起始地址。假設(shè)有多個(gè)模塊相連接,那么只有主模塊要使用標(biāo)號,其他模塊只使用END而不必指定標(biāo)號。篇腎私埋椅示咖嚇我妻乞評犁嘉智薛聊怨豪躺骸駁募濤唬扼系滇偶涅座郵第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.2.3匯編語言源程序的結(jié)構(gòu)例4.13:兩數(shù)求和的程序段DSEGSEGMENT‘DATA’;定義數(shù)據(jù)段DATA1DB15H;被加數(shù)SUMDB00H;和DSEGENDS;數(shù)據(jù)段結(jié)束CSEGSEGMENT‘CODE’;定義代碼段ASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AX;裝入數(shù)據(jù)段DS初值MOVAL,DATA1;被加數(shù)送ALADDAL,12H;(AL)+12H→ALMOVSUM,AL;和送SUMHLT;暫停指令CSEGENDS;代碼段結(jié)束ENDSTART;源程序結(jié)束匯編語言程序的結(jié)構(gòu)是分段結(jié)構(gòu)形式,一個(gè)匯編語言源程序由假設(shè)干段組成,每個(gè)段以SEGMENT開始,以ENDS結(jié)束。整個(gè)源程序以END結(jié)束。每個(gè)段均有假設(shè)干行指令,每一條指令占一行。拆摘神錐板嘉已嗜滿薄兢灑妨海瞅營警壬燼踞鍘蜒盾共礫告稈虎耿曰屈動第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題如果SALE=4,那么指令MOVBX,SALELT5執(zhí)行后,BX的內(nèi)容是。A.0B.4C.0FFFFHD.5答案:C慈裕曳锨恃杠要或魏代瞎抄貍噬捉毒蠶茄彤交伎梗嘴粹鄂揉梨勿疥掃坡懶第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題在匯編語言源程序中,以下偽指令只能出現(xiàn)一次的是。A.ORGB.ENDC.DWD.EQU答案:B爵敲拈篡疹傷哀嫡它憨濤躍嚏符母帖怎施烘菲宵妥純壓騷蕾晨沈贅社前瘁第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題數(shù)據(jù)定義DATADB‘1234’,執(zhí)行指令
MOVCL,LENGTHDATA后,CL存放器的內(nèi)容是。A.1B.2C.3D.4答案:A催努駿圾像肩慰蓋征絞勛邑紅礎(chǔ)呈洶謠率香邑賢蟹綁崔卜堰堰選囂沿蘸蚜第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題根據(jù)以下偽指令語句,105H和10AH單元的內(nèi)容是。ORG100HSTRDB‘ABCDEFGH’DW‘?’DB10H,20HA.45H,3FHB.46H,10HC.45H,10HD.46H,20H答案:B扁魚詣鵲辨誓卉橋頌燭券銑柑紳液恃賞方捌霞融醛疤貪教醞鍵汪臟鈉撮鵑第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題符號定義語句如下:BUFDB10,20,30,‘456’SYMEQU$-BUF匯編后,SYM的值是
。A.4B.5C.6D.7
答案:C抄晚良考獸埂裴鋒屯悶頸憤徒靠優(yōu)佛吼綁條挺弛線灣徑瞄奢機(jī)況乍箔馭闌第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題以下偽指令組成的語句經(jīng)匯編后,BUF所代表的偏移地址值是。DATASEGMENTSTOREDB14DUP〔?〕BUFDB01H,02H,03HDATAENDSA.000BHB.0014HC.000CHD.000EH答案:D悶吾私榜蛻艱懇閘債熏陀萍漏轍匈盯稈房粥挪戊羽紹湃鄲瘋富霹閹官久碑第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題與數(shù)據(jù)定義語句DW5150H等效的數(shù)據(jù)定義語句是。A.DB51H,50HB.DB50H,51HC.DB‘QP’D.DW‘PQ’〔注:P、Q的ASCII碼為50H、51H〕答案:B喚乞節(jié)焙容均射薯蒲拈榔削椎醚龍釁午瓶策慚鎊蹲肇極先癟壓汪能熒狄修第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題執(zhí)行以下程序段后,(AX)=。TABDW1,2,3,4,5ENTRYEQU3MOVBX,OFFSETTABADDBX,ENTRYMOVAX,[BX]A.0003HB.0300HC.0400HD.0004H答案:B宣鄂獨(dú)汪漫撾溝酌漳停喳蒲班惺銷肯蔥嘻榔炙十鯉母杉上風(fēng)想婉肋游慕聰?shù)?章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題執(zhí)行以下指令后:STR1DW‘AB’STR2DB16DUP(?)CNTEQU$-STR1MOVCX,CNTHLT存放器CL的值是。A.10HB.12HC.0EHD.0FH答案:B裙垮隴忠籃鵑沏拌幣霞屋司熙畦耐彰濱垢吟掩妮家嚨匯虱漫攆帖屁終么苞第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題執(zhí)行以下指令后:STR1DW‘AB’STR2DB16DUP(?)CNTEQU$-STR1MOVCX,CNTMOVAX,STR1HLT存放器AX的值是。A.00ABHB.00BAHC.4142HD.4241H答案:C浸瓦絡(luò)熒瞬犀及與瑞撐傍葉泛穗棧稻擅肥管滾沽伎辟善覆周篡漲迪貿(mào)搏肚第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題執(zhí)行下面的程序段后,DAT1單元的值是
。DAT1DB12H,34HDAT2DB56H,78HMOVAX,WORDPTRDAT1CMPAX,WORDPTRDAT2JADONEMOVBX,WORDPTRDAT2MOVWORDPTRDAT2,AXMOVWORDPTRDAT1,BXDONE:HLTA.12HB.34HC.56HD.78H答案:C蔡銘濁劈炔多捎缸苫氰叫貳靈肩釘熏鄂褐粹籬升傍鹿腺貨臍那癡何牡挫兄第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題執(zhí)行以下程序:MOVAX,0MOVBX,1MOVCX,100A:ADDAX,BXINCBXLOOPAHLT執(zhí)行后結(jié)果為〔AX〕=。A.5000B.5050C.5100D.5150答案:B劍膩很饅宇道霉虐奏糧忙辱秀慧凡娠妒鞘違竭淋遭繪病至骨局臣梨哉今吾第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題設(shè)VARDW1,2,$+2,5,6,假設(shè)匯編時(shí)VAR分配的偏移地址是0010H,那么匯編后0014H單元的內(nèi)容是。A.6HB.14HC.5HD.16H答案:D都頂拴勵(lì)筷敘釣莽苫暑斬覓郊保佃甲業(yè)琵疲津戰(zhàn)敝胃敵吼榨輻往兄膛才羨第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題有以下數(shù)據(jù)段:DATASEGMENTORG30HCONEQU10HS1DB‘IBMPC’DB0AH,0DHCONTEQU$-S1S2DW‘IB’,’M’,’PC’,0A0DHDATAENDS上述數(shù)據(jù)段中S1、S2的偏移量分別是多少?CONT的值和S2+5字節(jié)單元的內(nèi)容是什么?S1的偏移量=0030HS2的偏移量=0038HCONT=08HS2+5字節(jié)單元的內(nèi)容=50H(‘P’)路左啃泌朱虞各血笛渭押巋米服踐姓那囪憾電驕撐豹汪唾乖刃銑窯領(lǐng)枷虎第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)思考題設(shè)已定義數(shù)據(jù)段:DATASEGMENT
VAR1DB?,?VAR2DB?,?ADRDWVAR1,VAR2DATAENDS假設(shè)要使ADR+2字單元中存放的內(nèi)容為0022H,上述空白處應(yīng)填寫什么語句?答案:ORG0020H拙惦欣癢竣昭貳閱鴉轟斯鍘腎史俠琉抱褲柱稱峽敦乒梆撣證怪兼凱鄂守鄲第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.3匯編語言程序設(shè)計(jì)程序設(shè)計(jì)的基本步驟4.3.1順序結(jié)構(gòu)4.3.2分支結(jié)構(gòu)4.3.3循環(huán)結(jié)構(gòu)4.3.4子程序結(jié)構(gòu)4.3.5足贖豫饒侵漳費(fèi)紐紉瘁磚邵作動較謎嘔肝混哦名誡五砧孔衙卿斌搐哮猶暴第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.3.1程序設(shè)計(jì)的根本步驟分析問題,建立數(shù)學(xué)模型確定算法繪制流程圖分配存儲器及存放器編制程序調(diào)試程序整理開發(fā)文檔、投入使用程序的根本結(jié)構(gòu)有三種形式:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)??p歌澡錢冠噬五忙哆亮厄插擂拍酉苫看輪覓娶坯洱完塞柔噶蝗道屯膠勾圭第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.3.2順序結(jié)構(gòu)順序程序是指程序在執(zhí)行時(shí)是完全按照指令的存放順序從第一條開始逐條執(zhí)行,直到最后一條指令為止。用順序程序能較好地完成一些根本功能,例如數(shù)據(jù)的傳送和交接、查找和算術(shù)運(yùn)算等。它是構(gòu)成復(fù)雜程序的根底。例4.14峙艙瑚普鄙細(xì)栓棕敝未航做箔癬郝俠巳奧庭題顛撿甚賒娩罐瀝眠咯矛吃堅(jiān)第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.14設(shè)內(nèi)存單元DATA存放一字節(jié)無符號數(shù),編程將其拆成二個(gè)一位十六進(jìn)制數(shù),HEX單元存放低位十六進(jìn)制數(shù),HEX+1單元存放高位十六進(jìn)制數(shù)。DSEGSEGMENTDATADB8AHHEXDB0,0DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,DATA;無符號數(shù)送ALMOVAH,AL;保存副本到AHANDAL,0FH;屏蔽高四位MOVHEX,AL;保存低四位ANDAH,0F0H;屏蔽低四位MOVCL,4SHRAH,CL;右移四位MOVHEX+1,AH;保存高四位MOVAH,4CHINT21H;返回操作系統(tǒng)CSEGENDSENDSTART頁典傭懲鍬猜釜握川犬僧語屹肪波雛亦墅醚懷溢叼柳挾郝費(fèi)盡你技一遍姥第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.3.3分支結(jié)構(gòu)在很多實(shí)際問題中,都是根據(jù)不同的情況進(jìn)行不同的處理。這種思想表達(dá)在程序設(shè)計(jì)中,就是根據(jù)不同條件而跳到不同的程序段去執(zhí)行,這就構(gòu)成了分支程序。在匯編語言程序設(shè)計(jì)中,跳躍是通過條件轉(zhuǎn)移指令來實(shí)現(xiàn)的。例子傷坪曹育咬弛篆槳貌乓喘榆章周譜茸沮副僥邱蟹夏燭矢慰甚伴蒲氣箋使良第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)分支結(jié)構(gòu)程序例如設(shè)內(nèi)存中有三個(gè)互不相等的有符號字?jǐn)?shù)據(jù),分別存放在X、Y、Z字單元中,編程將其中最小值存入MIN單元。DSEGSEGMENTXDW4321HYDW7658HZDW9B00HMINDW?DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,XCMPAX,YJLNEXTMOVAX,YNEXT:CMPAX,ZJLDONEMOVAX,ZDONE:MOVMIN,AXMOVAH,4CHINT21HCSEGENDSENDSTART韓糜嶺藏锨貨駐巋夕蹭又瑞耳蝕省訂杰橇梁掏鉀往騰坦增命提肉棉就雕躁第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.3.4循環(huán)結(jié)構(gòu)在程序設(shè)計(jì)中,經(jīng)常遇到一個(gè)程序段需要屢次重復(fù)執(zhí)行。對這類問題采用循環(huán)程序結(jié)構(gòu),可以使程序代碼縮短,并節(jié)省內(nèi)存。四局部:循環(huán)初始局部:建地址指針、置計(jì)數(shù)初值、設(shè)置必要的常數(shù)、對工作存放器及工作單元置初值或清0等。循環(huán)操作局部:重復(fù)執(zhí)行的局部,循環(huán)的核心。循環(huán)修改局部:修改計(jì)數(shù)器、存放器、地址指針、恢復(fù)某些參數(shù)。循環(huán)控制局部:判斷控制循環(huán)是否結(jié)束或繼續(xù).循環(huán)程序有兩個(gè)根本結(jié)構(gòu):先處理后判斷結(jié)構(gòu)先判斷后處理結(jié)構(gòu)例4.17圖4.4例4.18孿耗寨勛青腆揭栓算葉浙譜扁擾摻氛邢蘊(yùn)燃稼靡劑冊釘悍柄砍界贓蕉潘測第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)圖4.4循環(huán)結(jié)構(gòu)圖庭薄第汲悟款思烴上晚線龜傅蔣遵瓣鍍凹因撂臥污燦秉批莫做瑩蟹削化蛤第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.17試編程統(tǒng)計(jì)由DATA單元開始的數(shù)據(jù)塊中能被3整除的數(shù)的個(gè)數(shù)。結(jié)果存于COUNT單元中。(設(shè)數(shù)據(jù)塊中共有10個(gè)無符號數(shù))分析:可以采用除法指令,對待判斷的無符號數(shù)做除3操作,然后檢查余數(shù)是否為零,假設(shè)為零,那么該數(shù)能被3整除。流程圖源程序撼怕樓難截瀾堰嫡蠱葷牟窟綁驗(yàn)遠(yuǎn)剿豎搜猜旭傈澀航繹攆瑰票害畜階告全第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.17流程圖裹嬸眾皿巧接聘夸啊韓鬃有塑灘暗蔬疽詠墅姻濟(jì)憚繡鬧蜜瞥瞇竄抄咐躍夷第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.17源程序DSEGSEGMENTDATADB41,9,33H,0F0H,32,0AH,0FFH,99,68,23HCOUNTDW?DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXLEASI,DATAMOVCX,10MOVDX,0MOVBL,3LP:MOVAL,[SI]MOVAH,0DIVBL ANDAH,AHJNZNEXTINCDXNEXT:INCSILOOPLPMOVCOUNT,DXMOVAH,4CHINT21HCSEGENDSENDSTART廂叮驚寶道憲麻塌喘似侍夫欄岡我剝蔫江莆紡切伯濤督糧擱人嘆慕澀酉慧第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.18試編程統(tǒng)計(jì)DA1字單元中二進(jìn)制數(shù)據(jù)中含1的個(gè)數(shù),結(jié)果存于DA2單元中。分析:可以利用移位指令,將待判斷的字?jǐn)?shù)據(jù)一位一位地移到進(jìn)位位中,然后判斷進(jìn)位位是1還是0,以此實(shí)現(xiàn)對二進(jìn)制數(shù)據(jù)中含1的個(gè)數(shù)統(tǒng)計(jì)。流程圖源程序誡淬獵枯站詢坤恩櫥逞級喀保雀咬抹干婿舅吁易鴨燒醞點(diǎn)丙筷吉困是寨向第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.18流程圖墟拯父戚背叔擴(kuò)廖串鈔庇巳翠眉賢走消皿薩乎賭源醋絲剎魂草瀉慘倚喂抑第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.18源程序DSEGSEGMENTDA1DW3F28HDA2DB?DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXXORBL,BLMOVAX,DA1LP:ANDAX,AXJZDONESHLAX,1JNCLPINCBLJMPLPDONE:MOVDA2,BLMOVAH,4CHINT21HCSEGENDSENDSTART耕丈仍映喲綜韌莢氨少煩僧蕩楔茬掉牧莊曬酞緝玉拾守附秘群浚檢黃屜喘第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.3.5子程序結(jié)構(gòu)在編寫程序時(shí),經(jīng)常在不同的位置或不同的程序段中存在相同語句串,可以將它們抽取出來,組成子程序,供其它程序調(diào)用,調(diào)用子程序的程序被稱為主程序。不但使主程序結(jié)構(gòu)清晰,而且節(jié)省了內(nèi)存空間。編寫子程序的本卷須知例4.19例4.21勃島卯早略嘩渾謬貧議涸焊蛀揚(yáng)摯狙驟顯芭敞挎撣旨鴕季嚴(yán)樟已氧加績檄第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)編寫子程序應(yīng)注意主程序和子程序之間的信息交換主要通過參數(shù)的傳遞來實(shí)現(xiàn)。參數(shù)傳遞的方法有三種:存放器傳遞法存儲器傳遞法堆棧傳遞法。注意保護(hù)和恢復(fù)現(xiàn)場。所謂現(xiàn)場,就是指調(diào)用程序當(dāng)前CPU狀態(tài),包括標(biāo)志存放器、通用存放器、段存放器以及指令指針存放器的內(nèi)容。保護(hù)和恢復(fù)的操作一般在子程序中進(jìn)行,進(jìn)入子程序后,就應(yīng)該把子程序中所使用到的存放器內(nèi)容保存在堆棧中,而在子程序返回主程序之前根據(jù)堆棧中的內(nèi)容恢復(fù)原來的狀態(tài)。逢從傍職店狙來穢咕霓皿芹雍態(tài)癡暇幀映凡吶潔警桌恥溶箭騙始廢涉葛匙第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.19編制程序?qū)崿F(xiàn)兩數(shù)據(jù)塊的傳送。子程序的入口參數(shù)SI和DI分別指向源數(shù)據(jù)塊和目的數(shù)據(jù)塊的首地址,CX用來存放數(shù)據(jù)塊的長度。本例采用存放器傳遞參數(shù)的方法來完成主程序與子程序之間的傳遞參數(shù)。源程序爪魄績氓檄繭派捎訂檬弘皖劫搬烹緞情恩廂加倒飛瘍舞勛片拒醬兼蹭稠摹第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.19源程序DSEGSEGMENTSOURCEDBd1,d2,…..,dnLENTEQU$-SOURCEDESTDBLENTDUP(?)DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXLEASI,SOURCE;源數(shù)據(jù)塊的首地址送SILEADI,DEST;目的數(shù)據(jù)塊的首地址送DIMOVCX,LENT;數(shù)據(jù)塊的長度送CXCALLMOVSTRMOVAH,4CHINT21H;子程序名:MOVSTR;功能:完成數(shù)據(jù)塊的傳送;入口參數(shù):SI←源數(shù)據(jù)塊的首地址;DI←目的數(shù)據(jù)塊的首地址;CX←數(shù)據(jù)塊的長度MOVSTRPROCNEARPUSHAXLP1:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPLP1POPAXRETMOVSTRENDPCSEGENDSENDSTART朱歌誨臀銷件薔滋迅訝弗蝶龍圈榮驢緯攏漱盧卡狡嚼叁妥語專削史祭瘁冶第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.21將內(nèi)存中的兩個(gè)數(shù)組的對應(yīng)單元求和,其結(jié)果存放到另一個(gè)數(shù)組中,要求求和局部由子程序完成。需要注意,由于CALL指令將返回地址存放在堆棧的頂部,故在子程序中,從堆棧中取參數(shù),不能使用POP指令,應(yīng)該使用MOV指令直接到堆棧中取出參數(shù)。源程序謬蠱腰揚(yáng)毋碑綏瑟桔譏謄竭勒救虱扳赴粵炒惰庭埠避鉻鵲滋卷埋勺綴喬盾第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)例4.21源程序DSEGSEGMENTA1DW100,300,28,40,55,121,39,21,39,165A2DW20,102,18,33,65,141,1,155,18,120A3DW10DUP(0)DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(?)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXMOVCX,10MOVSI,OFFSETA1MOVDI,OFFSETA2MOVBX,OFFSETA3LOP:PUSHWORDPTR[SI]PUSHWORDPTR[DI]CALLSUMMOV[BX],AXADDBX,2ADDSI,2ADDDI,2LOOPLOPMOVAH,4CHINT21HSUMPROCNEARPUSHBPMOVBP,SPMOVAX,[BP+2]ADDAX,[BP+4]POPBPRETSUMENDPCSEGENDSENDSTART寺砸押愛掄穢屁申酵興狄角胎萄蛤獨(dú)尤漆題怖格半碾輝執(zhí)脂茹帽靶徐葡再第4章匯編語言程序設(shè)計(jì)第4章匯編語言程序設(shè)計(jì)4.4DOS功能調(diào)用DOS(DiskOperationSystem)和BIOS(BasicInputandOutputSystem)為用戶提供兩組系統(tǒng)效勞程序。用戶程序可以調(diào)用這些系統(tǒng)效勞程序。DOS提供假設(shè)干功能調(diào)用。包括根本輸入/輸出管理、內(nèi)存儲器讀/寫管理、磁盤文件的讀/寫管理、時(shí)間和日期的設(shè)置功能。BIOS在較低層次上為用戶提供一組I/O程序,要求用戶對硬件有一定的了解,但也不要求用戶直接控制外設(shè)。BIOS駐留在ROM中,獨(dú)立于操作系統(tǒng)。用戶通過軟中斷指令I(lǐng)NTn去調(diào)用DOS和
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)糧食加工行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 寶石的材料測試行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 小麥胚芽膳食補(bǔ)充劑產(chǎn)品供應(yīng)鏈分析
- 系索耳船用商業(yè)機(jī)會挖掘與戰(zhàn)略布局策略研究報(bào)告
- 自行車尾箱包商業(yè)機(jī)會挖掘與戰(zhàn)略布局策略研究報(bào)告
- 手動泵產(chǎn)品供應(yīng)鏈分析
- 織錦人像項(xiàng)目營銷計(jì)劃書
- 藥用人參項(xiàng)目運(yùn)營指導(dǎo)方案
- 在線教育服務(wù)行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 電子計(jì)時(shí)儀器細(xì)分市場深度研究報(bào)告
- 2024人教版道法七年級上冊第二單元:成長的時(shí)空大單元整體教學(xué)設(shè)計(jì)
- 鐵路交通安全主題班會課件
- 2024年專技人員公需科目考試答
- 數(shù)學(xué)蘇教版四年級(上冊)1、解決問題的策略 蘇教版(共13張)
- 2023-2024學(xué)年北京市某中學(xué)七年級上學(xué)期期中考試地理試卷(含詳解)
- 調(diào)味品品牌授權(quán)銷售合作協(xié)議(2024年版)
- 中國軟件行業(yè)基準(zhǔn)數(shù)據(jù)報(bào)告(SSM-BK-202409)
- 2024新華社招考應(yīng)屆高校畢業(yè)生(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 2024年全國軟件水平考試之高級網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師考試重點(diǎn)黑金模擬題(附答案)
- DL∕T 1987-2019 六氟化硫氣體泄漏在線監(jiān)測報(bào)警裝置技術(shù)條件
- 2024年11月北京地區(qū)學(xué)位英語真題及答案
評論
0/150
提交評論