汇编(程序查询方式控制输入输出)

1、流程图:

条件传送方式又称为查询方式,即CPU传送数据之前(输入和输出),需要先查询外设是否准备好,没有准备好的话继续读取状态信息,直到外设准备好了以后开始数据传送。

2、汇编语言程序设计:

(1)用程序查询的方式将输入设备的一个数据读入CPU的BL中:

先读取状态,相与之后判断设备的状态(0代表忙,1是不忙),最高位为状态位;再从数据口读取数据。

     MOV DX,0001H    ;状态口地址 
NEXT:IN AL,DX    ;表示从外部设备输入数据给累加器(这里是状态 ),如果从外设端口中输入一个字节则给8位累加器 AL,若输入一个字则给16位累加器 AX
     AND AL,80H    ;按位与操作,保留最高位 
     JZ NEXT    ;JZ(Jump if Zero)是此前的运算结果为0时跳转;D7=0,不可以输入,需要继续监测状态
     MOV DX,0000H  ;数据口地址
     IN AL,DX  ;输入
     MOV BL,AL  ;CPU读入数据
     RET

(2)用汇编语言实现以查询方式的数据传送:将内存中首地址为BUF的存储区内的128字节数据向CRT终端输出。假设CRT终端数据口地址为0008H,状态口地址为0010,D7为状态位,D7=0表示输出缓冲器空,允许输出数据。

    MOV BX, OFFSET BUF
    MOV CX, 128
LOP:MOV DX, 0010H ;状态口地址
    IN AL, DX ;输入状态
    AND AL, 10000000B ;保留 D7
    JNZ LOP ;非零转移
    MOV AL, [BX] ;取出数据
    MOV DX, 0008H ;数据口地址
    OUT DX, AL ;输出
    LOOP LOP ;循环128次
    HLT
每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛
原文地址:https://www.cnblogs.com/zhai1997/p/12101697.html