布尔表达式的评估


我们使用逻辑控制器的接口,用汇编语言编写一个8085程序,只评估四个变量的两个布尔表达式。程序的输出应该通过输入从0000、0001……到1111的变化来自动进行逻辑测试,只需按任意键即可。

假设我们要评估以下布尔表达式。

首先,布尔表达式的真值表如下表所示。

P
Q
R
S
X
Y
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
1
0
0
0
1
1
0
0
0
1
0
0
1
0
0
1
0
1
0
0
0
1
1
0
1
0
0
1
1
1
0
0
1
0
0
0
0
1
1
0
0
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
0
0
1
1
0
1
1
1
1
1
1
0
0
0
1
1
1
1
0
0

PQRS输入分别连接到8255的PB3、PB2、PB1和PB0。X和Y的输出端分别连接到PA1和PA0。程序端口C应仅用于输出,并连接到输入PB3-0的线路PC3-0。每当我们按下按键时,我们只需将端口C中的值递减1。这导致端口B递增,而不是每次按下按键都递增。逻辑控制器的接口为用户提供12个输出线缓冲区和12个输入线缓冲区。12个输出线连接到ALS套件上8255的A端口和C端口(下)。8255的每条输出线的输出状态都通过发光二极管(LED)显示。在下图中,连接用于仅制作8255的一条输出线,如下所示。

括号内的值相互对应。同样,括号外的值也相互对应。例如,如果PB7输入为a1,则缓冲区输出也将为a1,反相器输出将为0,LED将点亮。

真值表存储在内存中作为查找表,例如从C100H位置开始。以下值(对应于LS位位置中的X和Y)存储在从C100H开始的连续位置中。

02, 00, 02, 00, 02, 00, 02, 00, 01, 01, 02, 00, 00, 03, 00, 00

程序

; FILE NAME BOOLEAN.ASM
ORG C100H
TABLE DB 02H, 00H, 02H, 00H, 02H, 00H, 02H, 00H
DB 01H, 01H, 02H, 00H, 00H, 03H, 00H, 00H

ORG C000H

PA EQU D8H
PB EQU D9H
PC EQU DAH
CTRL EQU DBH

MVI A, 10001010B
OUT CTRL ; Configure 8255 ports

LOOP: IN PB
ANI 0FH ; Now A will contain PQRS input value

LXI H, TABLE
ADD L
MOV L, A ; Point HL to proper row in the truth table

MOV A, M
OUT PA ; Output XY from truth table to display
JMP LOOP

更新于:2019年7月30日

375次浏览

启动您的职业生涯

完成课程获得认证

开始
广告