我之前发了一个帖子,询问如何为这个程序定义十六进制常量,有人帮我解决了这个问题,现在我正在尝试弄清楚这个程序是否正确运行。
该程序用于计算逻辑表达式X'Y + X'Z + YZ,并将结果输入D0。当程序完成时,我需要以二进制格式显示D0的内容。这是我所拥有的(对齐在这里有点混乱,但它在汇编程序中是对齐的(EASy 68K)):
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?还是我的理解错了?
谢谢
发布于 2012-10-30 05:58:44
对寄存器中的每一位同时执行逻辑表达式。
例如,在C语言中,整数1、2、7和-12313在if (a) printf("True");else printf(“False”)的上下文中都被认为是相等的;
如果(a || b) printf("a不是零或者b可能不是零或者甚至两者都不是零“),情况也是如此;
而是用于逐位逻辑运算
00000000001 (binary) == 1 in decimal
00000000010 (binary) == 2 in decimal
------------------------------------
00000000011 = 1 OR 2 == 3 in decimal
00000000000 = 1 AND 2 == 0 in decimalhttps://stackoverflow.com/questions/13130003
复制相似问题