⑴ 宏指令和子程序的異同編程時如何選用
宏與子程序都可以用一個名字定義一段程序,以簡化源程序的結構和設計。二者的區別:
1、在源程序中,通過書寫宏名來引用宏,而子程序是通過CALL指令來調用;
2、宏調用是通過宏擴展來實現的,宏引用多少次,就相應擴展多少次,所以,引用宏不會縮短目標程序;而子程序代碼在目標程序中只出現一次,調用子程序是執行同一程序段,因此,目標程序也得到相應的簡化
子程序
優點:模塊化,節省內存,可被多次調用,編程效率高。
缺點:額外開銷(保存返回地址,計算轉向地址,傳遞參數等)大,增加了執行時間。適用於子功能代碼較長、調用比較頻繁的情況。
宏調用:
優點:參數傳送簡單,執行效率高。
缺點:不節省空間,適用於子功能代碼較短、傳參較多的情況。
⑵ 在一段匯編程序中多次調用另一段程序,用宏指令比用子程序實現起來()
C
在一段匯編程序中多次調用另一段程序,用宏指令比用子程序實現占內存空間大,但速度快。
宏調用是通過宏擴展來實現的,宏引用多少次,就相應擴展多少次,所以,引用宏不會縮短目標程序;而子程序代碼在目標程序中只出現一次,調用子程序是執行同一程序段,因此,目標程序也得到相應的簡化。
(2)宏指令和子程序哪個速度快擴展閱讀:
在用一種不熟悉的宏語言進行宏編程時,可以這樣做,首先記錄下用戶想要宏完成什麼,然後打開宏文件並嘗試理解命令結構如何工作。
也可以修改命令以調整宏。一些宏語言,比如Great Plains 會計軟體的 Dexterity 運行時引擎,不能從其它數據源(如由逗號分隔的文本文件)導入數據。這一限制可以通過用更強大的編程語言,如VBA來創建一個計算機程序在此弱編程語言里生成一個特別的宏來解決。
⑶ 宏程序與子程序調用與區別
1.在匯編後產生的.obj文件中,子程序定義依然存在,而宏定義卻不復存在。
2.子程序調用是在執行時通過CALL指令完成的,而宏調用是在匯編時進行宏展開,被相應宏體所取代。
3.將多次調用的一段代碼定義為宏指令,與使用子程序相比,其執行速度要快(因為過程需要調用和返回),但目標代碼長。
4.宏指令的參數是在匯編時進行形實替換的,而子程序的參數是在執行時通過寄存器或堆棧等方式傳遞的。
大概想到這些,供參考
⑷ 用vb 和宏操作excel表時,下列哪個方法運算速度更快
第一種快,直接數組賦值要比單個單元格賦值加循環快多了。
⑸ 試分析宏指令和子程序在時間和空間方面的優缺點
宏指令表面看起來與調用子程序有點象,但區別是很大的.
宏指令是用一個「單詞」代替一段程序或字元串,編譯時編譯程序見到這個「單詞」就把你定義的這段程序或字元串插進去代替這個「單詞」,編譯好的機器碼再反編譯後你將看不到這個宏指令,只能看到插進去的程序或字元串.你在程序中寫了多條同樣的宏指令編譯後可看到同樣多條插入的程序段或字元串,編譯後的機器碼會變長.
調用子程序編譯後這里還是這條調用指令.寫了多次調用子程序編譯後也只有一段子程序,編譯後的機器碼不會變長.
所以一般在程序中多次使用一個常數,這個常數如果需要修改(在編程時,不是運行時)而且多處都做同樣的修改.用宏指令就比較方便,修改時只要在頭上宏指令定義改一處就行了.
比如說你要編一個上課打鈴程序,上課時間長度和休息時間長度在開頭定義:
SKSJ
EQU
45
;上課時間
XXSJ
EQU
15
;休息時間.
在程序中要用到上課和休息時間處都用這兩個"單詞"代替,如果頭頭要求把上課時間改為40,休息時間改為10,只要這兩句改成:
SKSJ
EQU
40
;上課時間
XXSJ
EQU
10
;休息時間.
就行了,不需要到程序里一個一個找出來修改,一個一個找出來修改還容易出錯.這樣還比較直觀,程序中見到SKSJ就知道是上課時間,不容易與其他同樣用到45這個數的地方搞混.
當然也可以定義成一句或幾句指令,這樣可以縮短匯編語言的長度(不是機器碼的長度,宏指令不會縮短編譯出來的機器碼碼的長度).定義成一句或幾句指令俺沒用過,只見到別人用過.
如果多次要用到同一段程序,一般使用子程序,這段程序只要寫一次就行了,要用時用子程序調用.
但子程序調用因為多了轉移和返回,所以運行時間要稍長些.宏指令沒有這個問題,但編譯好的機器碼要長些.
⑹ 子程序與宏指令在程序的使用中有何共性
宏與子程序都可以用一個名字定義一段程序,以簡化源程序的結構和設計。二者的區別:
1、在源程序中,通過書寫宏名來引用宏,而子程序是通過CALL指令來調用;
2、宏調用是通過宏擴展來實現的,宏引用多少次,就相應擴展多少次,所以,引用宏不會縮短目標程序;而子程序代碼在目標程序中只出現一次,調用子程序是執行同一程序段,因此,目標程序也得到相應的簡化
子程序
優點:模塊化,節省內存,可被多次調用,編程效率高。
缺點:額外開銷(保存返回地址,計算轉向地址,傳遞參數等)大,增加了執行時間。適用於子功能代碼較長、調用比較頻繁的情況。
宏調用:
優點:參數傳送簡單,執行效率高。
缺點:不節省空間,適用於子功能代碼較短、傳參較多的情況
⑺ 微機原理宏操作與子程序,分別在什麼情況下使用好
明白宏和子程序的區別即可
宏和子程序都是為了簡化源程序的編寫,提高程序的可維護性,但是它們二者之間存在著以下本質的區別:
在源程序中,通過書寫宏名來引用宏,而子程序是通過CALL指令來調用;
匯編程序對宏通過宏擴展來加入其定義體,宏引用多少次,就相應擴展多少次,所以,引用宏不會縮短目標程序;而子程序代碼在目標程序中只出現一次,調用子程序是執行同一程序段,因此,目標程序也得到相應的簡化;
宏引用時,參數是通過「實參」替換「形參」的方式來實現傳遞的,參數形式靈活多樣,而子程序調用時,參數是通過寄存器、堆棧或約定存儲單元進行傳遞的;
宏引用語句擴展後,目標程序中就不再有宏引用語句,運行時,不會有額外的時間開銷,而子程序的調用在目標程序中仍存在,子程序的調用和返回均需要時間。
總之,當程序片段不長,速度是關鍵因素時,可採用宏來簡化源程序,但當程序片段較長,存儲空間是關鍵因素時,可採用子程序的方法來簡化源程序和目標程序。
⑻ 你好,看了你的回答,想問你下,什麼是宏程序和子程序,兩個有什麼區別啊
其實說起來宏就是用公式來加工零件的,比如說橢圓,如果沒有宏的話,我們要逐點算出曲線上的點,然後慢慢來用直線逼近,如果是個光潔度要求很高的工件的話,那麼需要計算很多的點,可是應用了宏後,我們把橢圓公式輸入到系統中然後我們給出Z坐標並且每次加10um那麼宏就會自動算出X坐標並且進行切削, 實際上宏在程序中主要起到的是運算作用..宏一般分為A類宏和B類宏.A類宏是以G65 Hxx P#xx Q#xx R#xx的格式輸入的,而B類宏程序則是以直接的公式和語言輸入的和C語言很相似在0i系統中應用比較廣.
子程序的應用
1)零件上若干處具有相同的輪廓形狀,在這種情況下,只要編寫一個加工該輪廓形狀的子程序,然後用主程序多次調用該子程序的方法完成對工件的加工。
2)加工中反復出現具有相同軌跡的走刀路線,如果相同軌跡的走刀路線出現在某個加工區域或在這個區域的各個層面上,採用子程序編寫加工程序比較方便,在程序中常用增量值確定切入深度。
3)在加工較復雜的零件時,往往包含許多獨立的工序,有時工序之間需要適當的調整,為了優化加工程序,把每一個獨立的工序編成一個子程序,這樣形成了模塊式的程序結構,便於對加工順序的調整,主程序中只有換刀和調用子程序等指令。
編輯本段調用子程序M98指令指令格式:M98P__××××
指令功能:調用子程序
指令說明:P__為要調用的子程序號。××××為重復調用子程序的次數,若只調用一次子程序可省略不寫,系統允許重復調用次數為1~9999次。
⑼ 宏指令和子程序的異同編程時如何選用(微機匯編)
宏程序是用邏輯語言!用某種指令表示出來,
子程序就是一個程序多次反復利用,比如打孔,然後攻絲,那麼就可以把它設為子程序,然後在主程序中調用就可以了,簡化程序
⑽ 匯編裡面的宏和子程序有什麼區別
子程序是被調用的,某子程序只有一份。宏是在編譯時反復被復制的。