首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >68000汇编中的逻辑表达式

68000汇编中的逻辑表达式
EN

Stack Overflow用户
提问于 2012-10-30 05:33:33
回答 1查看 385关注 0票数 0

我之前发了一个帖子,询问如何为这个程序定义十六进制常量,有人帮我解决了这个问题,现在我正在尝试弄清楚这个程序是否正确运行。

该程序用于计算逻辑表达式X'Y + X'Z + YZ,并将结果输入D0。当程序完成时,我需要以二进制格式显示D0的内容。这是我所拥有的(对齐在这里有点混乱,但它在汇编程序中是对齐的(EASy 68K)):

代码语言:javascript
复制
START:  MOVE    X,D0
    NOT D0
    MOVE    D0,D1
    MOVE    Y,D2
    AND D2,D0
    AND Z,D1
    AND Z,D2
    OR  D1,D0
    OR  D2,D0
EXIT:   BRA EXIT
X:  DC  $000F
Y:  DC  $0033
Z:  DC  $0055

这就是我在各自的数据寄存器中得到的结果:

D0: 00000071 D1: 00000050 D2: 00000011

忽略结果应该在binary...being中显示的事实,这是一个逻辑表达式,而我只使用了and和OR,那么D0中的结果不应该是1或0吗?因为X、Y和Z都是非零常量,所以表达式的计算结果是1 (YZ=1)...have I made error in the program?还是我的理解错了?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 05:58:44

对寄存器中的每一位同时执行逻辑表达式。

例如,在C语言中,整数1、2、7和-12313在if (a) printf("True");else printf(“False”)的上下文中都被认为是相等的;

如果(a || b) printf("a不是零或者b可能不是零或者甚至两者都不是零“),情况也是如此;

而是用于逐位逻辑运算

代码语言:javascript
复制
00000000001 (binary) == 1 in decimal  
00000000010 (binary) == 2 in decimal  
------------------------------------  
00000000011 = 1 OR 2 == 3 in decimal
00000000000 = 1 AND 2 == 0 in decimal
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13130003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档