彙編(程式查詢方式控制輸入輸出)

2022-02-19 02:28:17 字數 930 閱讀 5207

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

ifzero)是此前的運算結果為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,

128lop: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

ARM匯程式設計序 邏輯控制

area example4,code,readonly 宣告 段example4 entry 標識程式入口 code32 宣告32位arm指令 start if x y z 100 else z 50 設x為r0,y為r1,z為r2 x y z均為無符號整數 mov r0,76 初始化x的值 mov...

匯程式設計序 輸出對應的英文單詞

任務 擊鍵盤上的乙個數字鍵,輸入0退出,其他顯示對應的單詞 參考解答 assume cs code,ss stack stack segment db 100h dup stack ends code segment start jmp beg digittab dw zero,one,two,th...

Win32彙編控制台下的幾種輸入輸出方式

以下文章 別人的帖子 在熟悉指令 偽指令和彙編語法的過程中,首先需要的是輸入 輸出的手段.下面是之前嘗試出的控制台輸入 輸出的幾種辦法 1 使用 masm 提供的 stdin stdout 函式 2 使用系統 api 3 使用微軟 c 標準庫 msvcrt.dll 中的 printf 函式.1 使用...