宏意思是源程式中的一段有獨立功能的程式代碼
宏指令,用戶自定義的指令。編程式時候,將多次使用的功能用一條宏指令來代替。
彙編包括指令 ,偽指令,宏指令。前兩個都是規定的,最後一個是你自己設計的。
好處是用起來方便,::))定義就是為了使用,但是要先定義,後調用。
(這一點和子程式可是不一樣啊)
例如,宏定義,兩個字相乘
multiply MACRO opr1, opr2, result
push dx
push ax
mov ax,opr1
IMUL opr2
mov result, ax
pop ax
pop dx
ENDM
調用這個宏,
multiply cx, var, xyz[bx]
宏展開
1 push dx
1 push ax
1 mov ax, cx
1 imul var (var不能使立即數)
1 mov xyz[bx], ax
1 pop ax
1 pop dx
(就是帶進去,看明白了吧,注意一點,必須保證展看後有效)
例如,求絕對值
宏定義,
absol MACRO oper
LOCAL next
cmp oper, 0 (和0比較)
jge next
neg oper (求補,就是求絕對值了)
next: (防止多次存入一個地址)
ENDM
宏調用,
.........
absol var
.......
absol bx
宏展開,
1 cmp var,0
1 jge ??0000
1 neg var
1 ??0000:
..........
1 cmp bx, 0
1 jge ??0001
1 neg bx
1??0001:
(很清楚把,就像是你做好了一個公式,然後帶入就是了,
彙編學到這裡才覺得有趣:))
&使用
例如宏定義,
leap macro cond, lab
j&cond lab
endm
宏調用
leap z, there
.........
leap nz, here
宏展開,
1 jz there
.........
1 jnz here
(明白了吧,就是and,合起來的意思,沒有什麼好講的,)
在舉一個例子
msg macro lab, num, xyz
lab&num db 'WELCOEME YOU STUDY WITH JINZHOU MR,&xyz'
endm
宏調用
msg ary, 1, wang (這個地方不用注釋吧,就是調用兩次:)
......
msg ary, 2, zhang
宏展開
1 ary1 db 'WELCOEME YOU STUDY WITH JINZHOU MR wang'
.......
1 ary2 db 'WELCOEME YOU STUDY WITH JINZHOU MR zhang'
(特別簡單吧,很好玩吧,)
%用法
例如,
宏定義,
msg macro count, string
msg&count db string
endm
errmsg macro text
cntr = cntr + 1
msg %cntr, text
endm
宏調用
entr=0
....
errmsg 'SYNTAX ERROR'
.......
errmsg 'invalid OPERAND'
宏展開
1 cntr = cntr + 1
1 msg %cntr, 'SYNTAX ERROR'
2 msg1 db 'SYNTAX ERROR'
...........
1 cntr = cntr + 1
1 msg %cntr, 'INVALID OPERAND'
2 msg1 db 'INVALID OPERAND'
(看出來了吧,就是代替,一般只能看到2所顯示的,為了清楚理解,
把1也寫出來了)
宏庫的建立與調用,(一般以mac後綴)
建立宏庫,很簡單,遍上號碼,變成一個程式就是了
入 MACRO.MAC macro1 MACRO
........
ENDM
..... macro2 MACRO
.........
ENDM
.......
(想用多少用多少)
調用,
方式include加上 路徑
不舉例子了,很簡單。
簡單說一下宏調用和子程式的區別:
子程式在程式執行期間調用,只占用自身大小的一段空間。
(必須到子程式的IP,好處是節省記憶體,效率高,
但是因為要保存返回地址,轉向地址,時間長,適合長代碼,
頻繁調用的)
宏調用,在彙編期間被展開,調用一次展開一次。
注:可能有失誤之處,請大家指出,另外這是學習的記錄
文章引用自:
相關詞條
-
彙編程式
彙編程式是指把彙編語言書寫的程式翻譯成與之等價的機器語言程式的翻譯程式,是為特定計算機或計算機系列設計的一種面向機器的語言,由彙編執行指令和彙編偽指令組...
正文 -
通用彙編程式
收了宏加工程式﹑高級語言翻譯程式等系統的一些優點﹐相繼研製出宏彙編程式... 通用彙編程式把彙編語言書寫的程式翻譯成與之等價的機器語言程式的翻譯程式。彙編程式輸入的是用彙編語言書寫的源程式﹐輸出的是用機器語言表示的目標...
介紹 發展過程 相關詞條 相關連結 -
宏指令
宏指令是彙編語言程式中的一種偽指令. 宏指令是代表某功能的一段源程式.
-
C語言開發技術詳解
,包括宏定義命令、條件編譯、其他預處理命令、內聯函式等內容。 第17章...介紹GCC調用彙編程式的方法,包括AT&T彙編簡介、GCC內嵌彙編、調用彙編程式等內容。 第26章為一個用C語言編寫的信息管理系統...
宣傳語 前言 目錄 -
AS86
的彙編程式概要格式as86 [-0123agjuw&...as86是8086..80386處理器下的彙編程式,它所採用的語法...,使用了as86彙編程式,並且把生成的二進制檔案轉為一個C檔案prog.v...
名稱 概要格式 描述 -
偽操作
定義及特點 彙編語言程式語句除指令以外還可以由偽操作和 宏指令...執行的,它是在 彙編程式對 源程式彙編期間由彙編程式處理的操作,它們可以...則 彙編程式使其記以第一個位元組的 偏移地址. 注釋(Comments)欄位用來...
定義及特點 一、數據定義及存儲器分配偽操作 二、表達式賦值偽操作EQU 三、段定義偽操作 -
電腦程式語言
指令,這樣的彙編程式叫做宏彙編程式。另外將機器語言程式轉換成相應...)。常見的語言處理程式有彙編程式、解釋程式、編譯程式等。 [2] 彙編程式...並成一條機器指令。通常彙編程式翻譯成彙編語言程式(即彙編)是簡單的一對一...
簡介 程式語言的發展 通用語言 資料庫語言 人工智慧語言 -
彙編
、高亮顯示和編譯、連結、調試彙編程式,非常方便實用。 輕鬆彙編的最大特點是...
詞語解釋 彙編簡介 現狀 編譯環境 常用命令 -
編譯原理[計算機專業課程]
0 0 )。彙編程式(assembler )將彙編語言的符號代碼和存儲...編譯器共享的操作,而兩者之間也有一些混合之處。彙編程式彙編程式(assembler):彙編程式是用於特定計算機上的彙編語言的翻譯程式。正如前面所...
基本概念 編譯原理課程 發展歷程 相關程式 步驟