这个程序的功能是完成读入从键盘敲入的数字字符。
A840
MOV R2, 30 ; 用于判数字符的下界值
MOV R3, 39 ; 用于判数字符的上界值
(844) IN 81 ; 判键盘上是否按了一个键
SHR R0 ; 即串行口中是否有了输入的字符
SHR R0
JP NC, 844 ; 没有输入则循环测试
IN 80 ; 输入字符到R0低位字节
MOV R1, OOFF
AND R0, R1 ; 清零R0的高位字节内容
CMP R0, R2 ; 判输入字符≥字符'0'否
JP C, 856 ; 为否, 则转到程序结束处
CMP R3, R0 ; 判输入字符≤字符'9'否
JP C, 856 ; 为否, 则转到程序结束处
OUT 80 ; 输出刚输入的数字符
JP 844 ; 转去等待输入下个字符
(856) RET
这里的重点,是程序当中用来判别串行口中是否有了键盘送来的一个字符的4个语句。这是通过检查状态寄存器的最低倒数第二位的内容完成的。指令
IN 81 读入接口的状态寄存器的内容到寄存器R0的低位字节,对R0两次右移,该位的值将移到进位触发器C中,C的值为1,表明接口中已有了数据,CPU可以去读了;为0则表明接口中还没有数据,需循环测试并等待。
思考题:本程序中为什么不必判别串行口输出完成否?
|
|