这个程序的功能是完成读入从键盘敲入的数字字符。

 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则表明接口中还没有数据,需循环测试并等待。

  思考题:本程序中为什么不必判别串行口输出完成否?