能力值:
( LV3,RANK:20 )
|
-
-
2 楼
!属于宏操作符,不是MCU指令,所以在MCU手册上查不到,在宏汇编书籍中一般都有介绍,和& % <> ;;为一类。
!叫做文字字符操作符,格式为:“!character”,他强制汇编把character当作文字字符。
!7相当于字符“7”,和c语言的'7'等效。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
哇,50kx
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
已经找到正确答案:是取反的意思,7的二进制位取反.(在此感谢CU的 system888net !!! 谢谢你!!!CU不知怎么的,又登不上了……)
当然,也要感谢看雪的lsanwan ,感谢他的热心回答。作为报答,赠50Kx。
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
谢谢LZ增金。
我上面说的是MASM的概念,而“bic $!7,r0”显然不是MASM的格式,当时给忽略了。
LZ确定“bic $!7,r0”中的“!”为7的二进制位取反,那么这种规定出处何在?
TASM、NASM等也没有这种用法和含义。
而《PDP-11 MACRO-11 Language Reference Manual.pdf》汇编语言手册中讲的很清楚,“!”也没有这种用法和含义。
UNIX的老祖AT&T汇编语言中同样也没有这种用法和含义。
GNU C语言中到有规定“!”为“NOT”,用于关系表达式,但它用于常数确实用安位取反的效果。gnu C预处理使用手册也有“!”的说明,难道这里的“bic $!7,r0”是gcc内联汇编的一部分,“!”由C预处理程序解释翻译,从而形成7的安位取反?
望高人指教。
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
! a ! b is a or ( not b ); i.e., the or of the first operand and the one’s complement of the second;
most common use is as a unary.
这是摘自《UNIX Assembler Reference Manual》的一段话,翻译成中文就是:
a!b 是: a 或(非b)的意思;即a或(b的非);经常用为一元运算符。
即!7为取7的非。
(UNIX V6是用GNU AS作为汇编编译器)
这种用法在现在的GNU AS手册已经不再标示了,lsanwan的质疑是有道理的。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
感谢LZ,学习了.
|
|
|