打印
[STC单片机]

这个语句是什么意思?

[复制链接]
1018|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kevinliwanli|  楼主 | 2018-7-18 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2018-7-18 16:06 | 只看该作者
立即数传送到ACC中

使用特权

评论回复
板凳
kevinliwanli|  楼主 | 2018-7-18 16:34 | 只看该作者
谢谢您的回复,A,#ADC_POWER|ADC_SPEEDLL|ADC_START
ADC_POWER    EQU    80H
ADC_START    EQU    08H
ADC_SPEEDLL  EQU    00H
我前面定义了这三个变量名称,但A里面只能存一个数呀,但这个语句里#后面跟了三个数,用|隔开,我不是很清楚这个|在汇编里起什么作用,之前没用过。谢谢指点。

使用特权

评论回复
地板
ddllxxrr| | 2018-7-18 16:44 | 只看该作者
我看是位与,然后给A

使用特权

评论回复
5
kevinliwanli|  楼主 | 2018-7-18 17:02 | 只看该作者
ddllxxrr 发表于 2018-7-18 16:44
我看是位与,然后给A

我刚才查了一个,应该是位或。
假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101

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

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

下表显示了 C 语言支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:


运算符

描述

实例

&
按位与操作,按二进制位进行"与"运算。运算规则:
0&0=0;   
0&1=0;   
1&0=0;     
1&1=1;
(A & B) 将得到 12,即为 0000 1100
|
按位或运算符,按二进制位进行"或"运算。运算规则:
0|0=0;   
0|1=1;   
1|0=1;   
1|1=1;
(A | B) 将得到 61,即为 0011 1101

使用特权

评论回复
6
ayb_ice| | 2018-7-18 17:33 | 只看该作者
本帖最后由 ayb_ice 于 2018-7-18 17:34 编辑
kevinliwanli 发表于 2018-7-18 16:34
谢谢您的回复,A,#ADC_POWER|ADC_SPEEDLL|ADC_START
ADC_POWER    EQU    80H
ADC_START    EQU    08H

相当于
MOV A,#(ADC_POWER|ADC_SPEEDLL|ADC_START)
也就是
MOV A,#88H


结果就是ACC的值等于0x88

使用特权

评论回复
7
linqing171| | 2018-7-18 22:15 | 只看该作者
开始 运行 calc,打开windows自带的计算器。
从菜单里找找,有个十六进制模式,里面有个 OR 按钮。  0x80 | 0x08 | 0x00 = 0x88 具体怎么计算的不大懂,反正计算器算出来的是对的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝