关于8086汇编程序的一道问题,我对它提供的答案不明白。
7、图为开关量检测与指示电路接口。显示器采用7段LED显示器,它由BCD-7段译码、驱动器所驱动,并采用共阴极接法(只有阴极为低电平,显示器才会发亮),试编写一段程序来统...
7、图为开关量检测与指示电路接口。显示器采用7段LED显示器,它由BCD-7段译码、驱动器所驱动,并采用共阴极接法(只有阴极为低电平,显示器才会发亮),试编写一段程序来统计开关闭合的个数,并显示在LED显示器上。输入缓冲器和输出数据锁存器地址为20H。
解: IN AL,20H
MOV BL,AL
MOV AL,00010000B
MOV CX,8
AGAIN:SHR BL,1
JNC NEXT ;这里不应该是JB或者JC吗?当开关关上后,不应该是低电平吗
因此检测到低电平时才加一不是这样吗?
INC AL
NEXT: LOOP AGAIN
OUT 20H,AL
请说清楚,感谢万分!!! 展开
解: IN AL,20H
MOV BL,AL
MOV AL,00010000B
MOV CX,8
AGAIN:SHR BL,1
JNC NEXT ;这里不应该是JB或者JC吗?当开关关上后,不应该是低电平吗
因此检测到低电平时才加一不是这样吗?
INC AL
NEXT: LOOP AGAIN
OUT 20H,AL
请说清楚,感谢万分!!! 展开
展开全部
假设K6、K3按下,即共有两个键,按下了。
输入的电路中,含有反相器,故输入进来的1,代表键盘按下了。
IN AL,20H ;AL = 01001000
MOV BL,AL ;BL = 01001000
MOV AL,00010000B
MOV CX,8 ;计划移动8次.
AGAIN:SHR BL,1 ;通过Cy的循环右移.
JNC NEXT ;Cy=0时,跳过去.
INC AL ;Cy=1时,加一.
NEXT: LOOP AGAIN
OUT 20H,AL ;显示出来2,即有两个键,按下了
输入的电路中,含有反相器,故输入进来的1,代表键盘按下了。
IN AL,20H ;AL = 01001000
MOV BL,AL ;BL = 01001000
MOV AL,00010000B
MOV CX,8 ;计划移动8次.
AGAIN:SHR BL,1 ;通过Cy的循环右移.
JNC NEXT ;Cy=0时,跳过去.
INC AL ;Cy=1时,加一.
NEXT: LOOP AGAIN
OUT 20H,AL ;显示出来2,即有两个键,按下了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询