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