标题:关于宏的问题
只看楼主
Xerox
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-30
 问题点数:0 回复次数:8 
关于宏的问题
各位好:
问题是这样的:我定义了一个如下的宏:
macro_name macro
....
endm
可是不知为什么在编译时总提示:End of file,no End directive
即使宏体里我什么也没有也还是有这样的提示,晕。。。不知该如何解决。。。
希望各位指点。。。谢谢!
搜索更多相关主题的帖子: macro name End directive 定义 
2007-04-30 18:00
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
在段外定义宏

2007-04-30 18:05
Xerox
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-30
得分:0 
我想是我没将问题说清楚:
我定义了一个宏库,用include包含进代码文件里的方式。
PS:环境是masm 5.0
请问版主,及各位同仁,该如何解决这问题?
谢谢!
2007-04-30 19:15
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 

没碰过这种问题
INCLUDE只是简单的把另一个文件的内容加进来而已,应该不会出错的
不防把代码发上来,大家一起研究


2007-04-30 20:07
Xerox
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-30
得分:0 
;-----------------------------------------------------------------
;Usage: Descriptor Base,Linit,Attr
; Base: dd
; Limit: dd (Low 20 bits available)
; Attr: dw (Lower 4 bits of higher byte are always 0}
;-----------------------------------------------------------------
Descriptor macro opr1,opr2,opr3
dw opr2 & 0FFFFh ;第一双字的segment limition
dw opr1 & 0FFFFh ;第一双字的base segment
db (opr1>>16) & 0FFh ;第二双字的base segment
dw ((opr2>>8) & 0F00h)|(opr3 & 0F0FFh) ;第二双字的Attr+limition+Attr2
db (opr1>>24) & 0FFh ;base segment3
endm
说明:
这是一个段描述符,8字节,具体用来描述段的。

2007-04-30 22:10
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
宏定义没错,如果直接把这段复制到程序中会报错吗

2007-04-30 22:26
Xerox
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-30
得分:0 
是的。特奇怪。本想编译后看看在保护模式下是啥样子。。。哎,晕哎,不知是哪个地方问题。。。
2007-04-30 22:27
Xerox
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-30
得分:0 
盼各位指点迷津。。。
2007-04-30 22:32
Xerox
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-4-30
得分:0 
这问题我知道答案了,呵呵。就是在最后加个 end 就成了。-----
;-----------------------------------------------------------------
;Usage: Descriptor Base,Linit,Attr
; Base: dd
; Limit: dd (Low 20 bits available)
; Attr: dw (Lower 4 bits of higher byte are always 0}
;-----------------------------------------------------------------
Descriptor macro opr1,opr2,opr3
dw opr2 & 0FFFFh ;第一双字的segment limition
dw opr1 & 0FFFFh ;第一双字的base segment
db (opr1>>16) & 0FFh ;第二双字的base segment
dw ((opr2>>8) & 0F00h)|(opr3 & 0F0FFh) ;第二双字的Attr+limition+Attr2
db (opr1>>24) & 0FFh ;base segment3
endm
end
2007-05-01 12:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-136283-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020569 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved