您的位置:首页 > 运维架构 > Linux

linux进程的挂起及恢复

2012-11-16 20:11 501 查看
c语言中的预处理
不是程序的一部分

占运行时间,不占编译时间
nasm的预处理
以%开头的

------------------------------------------------------

%define 例子: %define count(a,b) a+b

mov dl,count(1,2);dl=3

%undef  取消宏定义

例子: %undef count(a,b) ;取消宏定义

--------------------------------------------

%assign 没参数,有变量值。指令被执行时记一次,可以重新定义

例子:%assign i 0

%assign i i+1

---------------------------------------------------

%ifdef 符号

%endif

------------------------------------------

%if expr

expr为非0才执行

%endif

-----------------------------------------

%rep 循环次数

指令

%endrep

--------------------------------------------------

%macro     宏名称 参数个数

宏本体

%endmacro

例子:     %macro readchr 1

push ax

mov ah,1

int 21h

mov [%1],al

pop ax

%endmacro

把此宏保存为mac文件

------------------------------------------------------

%include ".mac"  ;文件引用宏

char db ' '

redchr char     ;char位读入的字符

------------------------------------------------------

一把情况下定义宏并且引用例如定义一个读取字符长数据的

;************ScanfString.mac********************
;用于输出字符串。
%ifndef SCANFSTRING_MAC
%define SCANFSTRING_MAC
%MACRO  SCANFSTRING 3
pusha
mov dx,%1 ;注意这里是地址
mov ah,0x0a
int 21h
xor bx,bx
mov bl,[%2] ;注意这里是数据
mov byte[bx+%3],'$'
;注释掉输出
popa
%ENDMACRO
%endif
---------------------使用--------------------------------------------------

[bits 16]
[org 0x0100]
[section .text]
jmp start
%include "ScanfString.mac"
start:
;输入一个字符串
SCANFSTRING buf,count,s
mov ah,0x4c
int 21h
[section .data]
buf db 80
count db 0
s times 81 db ''

本文出自 “无聊的人” 博客,请务必保留此出处http://cobbage.blog.51cto.com/2815604/982220
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: