注册 登录
编程论坛 汇编论坛

版主,不好意思,又有问题了.

zjjzff1 发布于 2009-10-31 22:36, 774 次点击
汇编里怎么用布尔值?
因为很多条件语句都要用布尔值,所以......

我是这样定义的
BR  dd   0
然后用时在mov eax,1;
mov BR,eax
但发现好像不对哦

分都被我问完了......
8 回复
#2
onepc2009-11-01 01:23
若是要用bool值。直接用TRUE FALSE 或者0或1
#3
onepc2009-11-01 01:40
而且上面的mov 我这边试正常啊?
#4
onepc2009-11-01 01:40
而且上面的mov 我这边试正常啊?
#5
东海一鱼2009-11-01 10:18
上面的代码没有问题。

给一个变量可以直接赋值。这个值可以是立即数或寄存器,但不能是另外一个变量。

因此:

Val   dd     0

mov   eax,1
mov   Val,eax

OR
 
mov   Val,1

都可以

MOV   xxx,TRUE
MOV   xxx,FALSE

这种形式的前提是你定义过这两个常量如: TRUE   equ  1       FALSE    equ  0

masm32里面可以直接使用,是因为WINDOWS.INC这个头文件里面已经作了上述定义。
#6
sll08072009-11-01 23:59
bool 长度1字节 其值 FALSE 或 TRUE

windows.inc 已经预定义了

bool typedef BYTE

所以
Val bool ?  也是可以的

汇编里按类型长度定义就行
没有那么多的类型汇编里面
#7
zklhp2009-11-02 16:47
布尔值的true false不过是立即数~
#8
东海一鱼2009-11-02 17:20
回复 6楼 sll0807
bool  typedef BYTE   ??  我以为这个类型定义早已是过去式了。

BOOL  typedef DWORD      这个定义几乎覆盖了WIN32的函数集。


俗话说汇编无类型,这话一点没错。但汇编语言不是孤立存在的。
我想MASM32保留bool这个类型的定义可能是为了和某些高级语言的接口兼容性,比如DelPhi中的缺省布尔值类型即为单字节型。而把BOOL声明为longbool.
1