與高級語言程序設(shè)計(jì)類似,用匯編語言進(jìn)行程序設(shè)計(jì)時(shí)同樣按以下步驟進(jìn)行。

  分析問題,建立數(shù)學(xué)模型;

  確定算法;

  編制程序"> 蜜臀色欲AV无码人妻,天堂中文字幕一区二区三区,精品无码久久久久久久动漫app,成人无码AV片AV片AV无码
大學(xué)生新聞網(wǎng)
大學(xué)生新聞大學(xué)生活校園文學(xué)大學(xué)生村官
社會實(shí)踐活動社會實(shí)踐經(jīng)歷社會實(shí)踐報(bào)告社會實(shí)踐總結(jié)社會實(shí)踐心得
全國排名校友會版軟科排名分類排名本科排名一本排名二本排名?婆琶
求職簡歷職場法則面試技巧職場故事求職招聘
英語學(xué)習(xí)計(jì)算機(jī)學(xué)習(xí)電氣工程機(jī)械工程經(jīng)濟(jì)管理建筑設(shè)計(jì)財(cái)務(wù)會計(jì)
申請書證明書檢討書自薦信演講稿心得體會調(diào)查報(bào)告讀后感求職信推薦信其它范文
 

匯編子程序的設(shè)計(jì)方法

4.4.1 程序設(shè)計(jì)概述

  與高級語言程序設(shè)計(jì)類似,用匯編語言進(jìn)行程序設(shè)計(jì)時(shí)同樣按以下步驟進(jìn)行。

  分析問題,建立數(shù)學(xué)模型;

  確定算法;

  編制程序流程圖;

  編寫程序;

  上機(jī)調(diào)試。

   初學(xué)程序設(shè)計(jì)者往往不習(xí)慣編制程序流程圖。實(shí)際上,在編寫程序前先構(gòu)思程序流程圖,不僅能加速程序的編制,而且對程序在邏輯上的正確性也比較容易查找和 修改。有了程序流程圖,即可根據(jù)流程圖,逐條編寫程序。在編寫程序時(shí)要注意程序的基本格式,分清指令語句和偽指令的不同用途,正確使用各種尋址方式和指令 系統(tǒng)中的各種指令。

  有關(guān)源程序的基本結(jié)構(gòu)做如下說明。

 。1)一個匯編語言源程序一般具有代碼段、數(shù)據(jù)段、堆棧段 和附加段。8086/8088/80286允許同時(shí)使用4個段。80386/80486除以上4個段外,還增加了FS和GS兩個附加數(shù)據(jù)段。在實(shí)際程序 中,只有代碼段是必需的,其他段都為可選。在實(shí)地址方式下,每個段的大小為小于等于64KB;在保護(hù)方式下,每個段最大長度允許4GB。

 。2)ASSUME偽指令只說明各段寄存器和邏輯段的關(guān)系,并沒有為段寄存器賦值。因此,在源程序中,除代碼段CS和堆棧段SS(在組合類型中選擇了STACK參數(shù))外,其他定義的段寄存器由用戶在代碼段起始處用指令進(jìn)行段基址的裝入。

  (3)每個源程序在代碼段中都必須含有返回DOS操作系統(tǒng)的指令語句,以保證程序執(zhí)行結(jié)束后能自動返回DOS狀態(tài)。終止當(dāng)前程序,使其正確返回DOS狀態(tài)有以下幾種:

  ①采用DOS功能與程序中的4CH功能調(diào)用

  這種方法在代碼段結(jié)束前加以下調(diào)用語句:

  MOV AH,4CH;功能號4CH→AH

  INT 21H;中斷調(diào)用

 、诓捎脴(biāo)準(zhǔn)序法,適用于定義為FAR的過程中

  此方式僅用于.COM格式的可執(zhí)行文件。

  源程序編寫結(jié)束后,應(yīng)當(dāng)輸入計(jì)算機(jī)中進(jìn)行調(diào)試。上機(jī)調(diào)試大致有以下四步:

 。1)使用編輯程序,將編寫好的程序送入計(jì)算機(jī),在盤中建立一個擴(kuò)展名為.ASM的文件;

 。2)使用宏匯編程序,將擴(kuò)展名為.ASM的源程序匯編成目標(biāo)程序,在盤上獲得擴(kuò)展名為.OBJ的文件;

 。3)使用連接程序(LINK),將目標(biāo)程序連接裝配成可執(zhí)行文件,其擴(kuò)展名為.EXE,并存于盤上;

 。4)程序可運(yùn)行,如果運(yùn)行中仍有問題,可使用調(diào)試程序(DEBUG)進(jìn)行調(diào)試,直到問題全部解決、運(yùn)行正確為止。

  只有在計(jì)算機(jī)上通過運(yùn)行的程序,才能認(rèn)為是正確的程序。

  4.4.2 分支程序設(shè)計(jì)

  計(jì)算機(jī)可根據(jù)不同條件進(jìn)行邏輯判斷,從而選擇不同的程序流向。程序的流向是由CS和IP(EIP)決定的,當(dāng)程序的轉(zhuǎn)移僅在同一段內(nèi)進(jìn)行時(shí),只需修改偏移地址IP(EIP)的值;如果程序的轉(zhuǎn)移是在不同的段之間進(jìn)行,則段基址CS和偏移地址IP(EIP)均需要修改。

  轉(zhuǎn)移指令分為無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令。在設(shè)計(jì)分支程序前,請復(fù)習(xí)第3章有關(guān)轉(zhuǎn)移指令的內(nèi)容,尤其是條件轉(zhuǎn)移指令。能否正確使用這些轉(zhuǎn)移指令,是能否編寫好分支程序的關(guān)鍵。

  分支程序設(shè)計(jì)要領(lǐng)如下。

   (1)首先要根據(jù)處理的問題用比較、測試等方式,或者用算術(shù)運(yùn)算、邏輯運(yùn)算,使標(biāo)志寄存器產(chǎn)生相應(yīng)的標(biāo)志位。例如,比較兩個單元的地址的高低、兩個數(shù)的 大小,測試某個數(shù)據(jù)是正還是負(fù),測試數(shù)據(jù)的某位是0還是1等。將處理的結(jié)果反映在標(biāo)志寄存器的CF, ZF, SF, DF和OF位上。

 。2)根據(jù)轉(zhuǎn)移條件選擇轉(zhuǎn)移指令。通常一條條件轉(zhuǎn)移指令只能產(chǎn)生兩路分支,因此要產(chǎn)生n路分支需n-1條條件轉(zhuǎn)移指令。

 。3)各分支之間不能產(chǎn)生干擾,如果產(chǎn)生干擾,可用無條件轉(zhuǎn)移語句進(jìn)行隔離。

  4.4.3 循環(huán)程序設(shè)計(jì)

  在程序中重復(fù)執(zhí)行的程序段可用循環(huán)程序?qū)崿F(xiàn),80x86微機(jī)系統(tǒng)中有專門的循環(huán)控制指令來簡化循環(huán)程序的設(shè)計(jì)。循環(huán)控制指令已在第3章進(jìn)行了介紹,這里不再多敘。

  一個循環(huán)程序通常由四部分組成。

  1)初始化部分

  為循環(huán)操作做準(zhǔn)備工作,建立循環(huán)的初始值,如初始化地址指針、計(jì)數(shù)器及給變量賦初值等。

  2)循環(huán)體

  循環(huán)體為循環(huán)的工作部分,用于完成各種具體操作,它可以是一個順序結(jié)構(gòu)、分支結(jié)構(gòu)或又一個循環(huán)結(jié)構(gòu)。若循環(huán)體內(nèi)又包含有循環(huán)程序,則稱為多重循環(huán)。

  3)修改部分

  為執(zhí)行循環(huán)而修改某些參數(shù),如地址指針、計(jì)數(shù)器或某些變量。

  4)控制部分

  判斷循環(huán)是否結(jié)束,通常判斷循環(huán)是否結(jié)束主要有兩種方法:

 。1)計(jì)數(shù)器控制循環(huán),這種方式一般用于循環(huán)次數(shù)已知的情況;

 。2)條件控制循環(huán),用于循環(huán)次數(shù)未知,根據(jù)條件決定是否結(jié)束。

  【例4-2】計(jì)算Y∑20

  i1Ai

  設(shè)A1,A2……,A20是一組無符號16位二進(jìn)制數(shù),并設(shè)其和不大于2B。

  分析:定義數(shù)組名TABL存放A1,A2……,A20,和存放于單元YY中。中間結(jié)果存于寄存器AX中,BX寄存器為地址指針,CX寄存器作計(jì)數(shù)器。

  4.4.4 子程序設(shè)計(jì)

  程序設(shè)計(jì)過程中常常把多次引用的相同程序段編成一個獨(dú)立的程序段,當(dāng)需要執(zhí)行這個程序段時(shí),可以用調(diào)用指令調(diào)用它。具有這種獨(dú)立功能的程序段稱為過程或子程序。調(diào)用子程序的程序通常稱為主程序,或調(diào)用程序。主程序向子程序的轉(zhuǎn)移叫子程序調(diào)用,簡稱轉(zhuǎn)子。

  1.子程序的設(shè)計(jì)方法

  適合編成子程序的程序有以下兩大類:

 。1)程序需要反復(fù)使用,這類程序編寫成子程序可避免重復(fù)編寫程序,并節(jié)省大量存儲空間。

  (2)程序具有通用性,這類程序大家都要用到,如鍵盤管理程序、磁盤讀寫程序、標(biāo)準(zhǔn)函數(shù)程序等。編成子程序后便于用戶共享。

  為了使用戶使用方便,子程序應(yīng)當(dāng)以文件形式編寫。子程序文件由子程序說明和子程序本身兩部分構(gòu)成。

  1)子程序說明部分

  子程序說明部分應(yīng)提供足夠的信息,使不同的用戶看了此部分后就知道該子程序的功能。子程序說明部分要求語言簡潔、確切,一般由以下幾部分組成:

  子程序的名稱;

  子程序的功能;

  使用的寄存器和存儲單元;

  子程序的入口、出口參數(shù);

  本子程序是否又調(diào)用其他子程序。

  子程序從PROC語句開始,以ENDP語句結(jié)束,程序中至少應(yīng)當(dāng)包含一條RET語句用以返回主程序。在定義子程序時(shí),應(yīng)當(dāng)注意其距離屬性:當(dāng)子程序和調(diào)用程序在同一代碼段中時(shí),用NEAR屬性;當(dāng)子程序及其調(diào)用程序不在同一個代碼段中時(shí),應(yīng)當(dāng)定義為FAR屬性。

  當(dāng)由DOS系統(tǒng)進(jìn)入子程序時(shí),子程序應(yīng)當(dāng)定義為FAR屬性。為執(zhí)行子程序后返回操作系統(tǒng),在子程序的前幾條指令中設(shè)置返回信息。

  2.子程序使用中的問題

  1)子程序的調(diào)用和返回

   主程序調(diào)用子程序是通過CALL指令來實(shí)現(xiàn)的。子程序執(zhí)行后,通過RET指令,返回主程序調(diào)用指令CALL的下一條指令,繼續(xù)執(zhí)行主程序。一個子程序可 以由主程序在不同時(shí)刻多次調(diào)用。如果在子程序中又調(diào)用了其他的子程序,則稱為子程序的嵌套。特別是當(dāng)子程序又能調(diào)用子程序本身時(shí),這種調(diào)用稱為遞歸。有關(guān) CALL指令和RET指令在第3章指令系統(tǒng)中已經(jīng)詳細(xì)介紹,這里不再重復(fù)。

  2)調(diào)用子程序時(shí)寄存器及所用存儲單元內(nèi)容的保護(hù)

  如果子程序中要用到某些寄存器或存儲單元時(shí),為了不破壞原有的信息,要將寄存器或存儲單元的原有內(nèi)容壓棧保護(hù),或存入子程序不用的寄存器或存儲單元中。

  保護(hù)可以放在主程序中,也可以放在子程序中,但放在子程序中較好。例如:

  用于中斷服務(wù)的子程序則一定要把保護(hù)指令安排在子程序中,這是因?yàn)橹袛嗍请S機(jī)出現(xiàn)的,因此無法在主程序中安排保護(hù)指令。

  3.子程序調(diào)用時(shí)參數(shù)的傳遞方法

  調(diào)用程序在調(diào)用子程序時(shí)需要傳送一些參數(shù)給子程序,這些參數(shù)是子程序運(yùn)算中所需要的原始數(shù)據(jù)。子程序運(yùn)行后要將處理結(jié)果返回調(diào)用程序。原始數(shù)據(jù)和處理結(jié)果的傳遞可以是數(shù)據(jù),也可以是地址,統(tǒng)稱為參數(shù)傳遞。

  參數(shù)傳遞必須事先約定,子程序根據(jù)約定從寄存器或存儲單元取原始數(shù)據(jù)(稱入口參數(shù));進(jìn)行處理后將處理結(jié)果(稱出口參數(shù))送到約定的寄存器或存儲單元,返回到調(diào)用程序。參數(shù)傳遞一般有下面三種方法。

 。1)用寄存器傳遞:適用于參數(shù)傳遞較少、傳遞速度快的情況。

 。2)用堆棧傳送:適用于參數(shù)傳遞較多、存在嵌套或遞歸的情況。

  (3)用存儲單元傳送:適用于參數(shù)傳遞較多時(shí),但傳遞速度較慢。
    作者:大學(xué)生新聞網(wǎng) 來源:大學(xué)生新聞網(wǎng)
    發(fā)布時(shí)間:2018-09-17 瀏覽:
  • 面對面學(xué)習(xí)總是比在線學(xué)習(xí)好嗎
  • 最近關(guān)于重新開放學(xué)校的激烈爭論主要取決于在線教學(xué)的質(zhì)量。這是可以理解的。但是,關(guān)于在線指導(dǎo)的許多內(nèi)容仍然被誤解,F(xiàn)在該改變這種
  • 06-09 關(guān)注:73
  • 在線學(xué)習(xí)的4條建議
  • 印第安納大學(xué)(IU)的新資源介紹了使在線學(xué)習(xí)成功的一些最重要因素。

    當(dāng)IU關(guān)閉體育課并轉(zhuǎn)向在線教學(xué)時(shí),電子學(xué)習(xí)研究與實(shí)踐實(shí)驗(yàn)室開始
  • 06-09 關(guān)注:65
  • 激光視盤 可以自由放置和使用
  • 激光視盤采用丙烯酸塑料制成,大多數(shù)光盤直徑為30厘米(C12英寸),也有13厘 米(5英寸)的小型盤,盤的轉(zhuǎn)速為1500轉(zhuǎn)/分,但應(yīng)指出,為
  • 09-18 關(guān)注:133
  • 數(shù)字技術(shù)用于語音信號高效多路傳輸
  • 欣賞聲音、喜愛音樂,這是音響的源點(diǎn)。為了滿足這一需要,音響系統(tǒng)需由兩個系統(tǒng)組成。其一是對音樂與人聲加以收音并加以調(diào)整,記錄在唱
  • 09-18 關(guān)注:122
  • 電腦正在進(jìn)入有線電視網(wǎng)
  • 當(dāng)前,隨著數(shù)字計(jì)算機(jī)和多媒體技術(shù)的發(fā)展,許多大的計(jì)算機(jī)制造公司都提出,在微型計(jì)算機(jī)上實(shí)現(xiàn)電視的功能,即利用計(jì)算機(jī)網(wǎng)絡(luò)來接收數(shù)字
  • 09-18 關(guān)注:128
  • 電視信號的傳輸過程
  • 當(dāng)前,像高保真音響、高清晰度電視、VCD、數(shù)碼錄音等新詞匯大量充斥在我們身邊,它們一方面代表這新技術(shù)的涌現(xiàn),另一方面也體現(xiàn)了這些
  • 09-18 關(guān)注:196
  • 中斷技術(shù)引入計(jì)算機(jī)系統(tǒng)
  • 中斷技術(shù)是現(xiàn)代計(jì)算機(jī)系統(tǒng)中很重要的功能。最初,中斷技術(shù)引入計(jì)算機(jī)系統(tǒng),只是為了解決快速的CPU與慢速的外部設(shè)備之間傳送數(shù)據(jù)的矛盾
  • 09-18 關(guān)注:261