2.5 巨集指令及子程式設計實驗
2.5.1 實驗目的
1、熟悉巨集指令、巨集定義、巨集呼叫以及巨集展開的概念;掌握巨集指令的定義與呼叫的方法。
2、掌握子程式的定義、呼叫以及呼叫程式與子程式之間引數的傳遞方法。
3、了解巨集指令與子程式的異同以及各自的適用場合。
2.5.2 實驗預習要求
1、複習巨集指令的定義與呼叫方法。
2、複習過子程式的定義與呼叫方法。
3、根據「2.5.3 實驗內容」中給出的流程圖和程式框架編寫源程式,以便上機除錯。
4、從「2.5.4 實驗習題」中任選一道題目,編寫源程式,以便上機除錯。
2.5.3 實驗內容
從鍵盤輸入10個無符號十進位制數(小於256),將其轉換為二進位制數並存放在num位元組型變數中,找出其中的最大數,並將找出的最大數在
螢幕上顯示出來。
要求:①在螢幕上顯示字串提示資訊的
功能由巨集指令dstring實現;
②將鍵盤輸入的十進位制數轉換成二
進製數由子程式dtob實現;
③在n個無符號位元組型二進位制數中
找出最大數的功能由子程式fmax實現;
④將乙個無符號位元組型二進位制數轉
換為十進位制數並在螢幕上顯示的功能由子
程式btoad實現。
程式執行結果如右圖所示。
1、程式設計指導
(1)顯示提示資訊的巨集指令dstring的編寫
巨集指令通常用於在程式中需要反覆使用但所需指令條數又不是很多的情形;而對於需要經常使用且需要較多指令才能完成的功能通常通過子程式呼叫來實現。這是因為,從執行速度上看,由於子程式呼叫涉及到保護斷點的操作,因此,子程式呼叫比巨集呼叫執行時間相對要稍長一些;但從生成的可執行檔案的大小方面考慮,子程式呼叫生成的檔案要小一些。讀者在進行組合語言程式設計時,應綜合考慮兩者的利弊,以便進行合理選擇。
下面給出實現提示資訊顯示的巨集指令的定義:
dstring macro string
push dx
push ax
mov dx,offset string
mov ah,09h
int 21h
pop ax
pop dx
endm
請讀者注意,巨集指令應該先定義,後呼叫。因此,巨集定義通常緊跟在**段中段暫存器賦值指令之
子程式呼叫與巨集定義的異同 巨集與子程式的區別
巨集和子程式都是為了簡化源程式的編寫,提高程式的可維護性,但是它們二者之間存在著以下本質的區別 1 在源程式中,通過書寫巨集名來引用巨集,而子程式是通過 call 指令來呼叫 2 匯程式設計序對巨集通過巨集擴充套件來加入其定義體,巨集引用多少次,就相應擴充套件多少次,所以,引用巨集不會縮短目標程式 ...
VC預處理指令與巨集定義的妙用
vc預處理指令與巨集定義的妙用 2008年04月02日 星期三 下午 06 36 vc預處理指令與巨集定義的妙用 剛接觸到mfc程式設計的人往往會被mfc 嚮導生成的各種巨集定義和預處理指令所嚇倒,但是預處理和巨集定義又是c語言的乙個強大工具。使用它們可以進行簡單的源 控制,版本控制,預警或者完成一...
不帶引數的巨集定義與帶引數的巨集定義
巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨集名替換為字串...