1、 從鍵盤上讀入一串字元並在本機上顯示:
data segment
msg1 db 13,10,'please input a char : ', 13,10,13,10,'$'
ddd1 db 13,10,13,10
ddd2 db 81 dup
data ends
code segment
assume cs:code, ds:data
start: mov ax, data
mov ds, ax
key: mov dx, 3fbh通訊線路控制暫存器位址
mov al, 80h允許訪問波特率因子暫存器
out dx, al
mov dx, 3f8h通訊線路控制暫存器位址
mov al, 12
out dx,al寫入對應波特率為9600的波特因子的低8位
inc dx
mov al, 0
out dx, al寫入波特因子的高8位
mov al, 0bh
mov dx, 3fbh
out dx, al設定序列通訊資料傳送格式為:8位字元,1位停
;止位,奇校驗
mov al, 03h
mov dx, 3fchmodem暫存器位址
out dx, al資料準備就緒,請求傳送
check: mov dx,3fdh
in al,dx讀線路狀態暫存器
test al,1h查接收緩衝器是否滿,若滿,則轉接收子程式
jnz rev
test al,20h查傳送緩衝器是否空,不空,轉check
jz check
mov dx, offset msg1
mov ah, 99號功能呼叫,顯示提示.
int 21h顯示.
mov di, offset ddd2
lop:
mov ah, 1輸入字元.
int 21h
cmp al, 13
jz exit回車'結束.
mov [di], al
inc di
cmp di, offset ddd2 + 80
jz exit輸入80個字元了,也結束.
jmp lop繼續輸入.
exit:
mov dx, offset ddd1
mov ah, 99號功能呼叫.
int 21h顯示輸入的字元.
2、傳送程式(查詢方式)
data segment
disp db 'transmission start:',0ah,0dh,'$'
data ends
stack segment para stack 'stack'
db 200 dup(0)
stack ends
code segment
assume cs: code, ds: data, ss: stack
start: mov ax, data
mov ds, ax
mov ax, stack
mov ss, ax
mov dx,3fbh
mov al, 80h
outdx, al允許訪問波特率因子暫存器
mov dx,3f8h置波特率因子暫存器
mov al,12h波特率因子低位元組
out dx, al
mov dx, 2f9h
mov al, 0h波特率因子高位元組
out dx, al
mov dx,3fbh置線路控制暫存器
mov al,0bh資料位7位、停止位1位、奇校驗
out dx, al
mov al, 03h
mov dx, 3fchmodem暫存器位址
out dx, al資料準備就緒,請求傳送
mov dx,offset disp ;顯示傳送提示資訊
mov ah,9
int 21h
lop: mov dx,3fdh讀線路狀態暫存器
in al, dx
test al,20h測試傳送保持暫存器空?
jz lop不空,則迴圈測試
mov ah,1讀取按鍵字元,並顯示
int 21h
mov dx,3f8h傳送該字元
out dx, al
cmp al,13h判斷按下回車嗎?
jz over是,則結束
jmp lop不是,繼續迴圈
over: mov ah,4ch返回dos
int 21h
code ends
end start
2.接收程式(查詢方式):
data segment
rbuf db 30 dup(0)
disp db 'receive start:',0ah,0dh,'$'
error db 'receive error!',0ah,0dh,'$'
data ends
stack segment para stack 'stack'
db 200 dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea si,rbuf置接收緩衝區位址指標
mov dx,3fbh置dlab=1
mov al,80h
out dx,al
mov dx,3f8h置波特率因子暫存器
mov al,12h波特率因子低位元組
out dx,al
mov dx,3f9h
mov al,0波特率因子高位元組
out dx,al
mov dx,3fbh置通訊線路控制暫存器
mov al,0bh資料位7位、停止位1 位、奇校驗
out dx,al
mov dx,3fch置modem控制暫存器
mov al,02h禁止中斷
out dx,al
mov dx,3f9h置中斷允許暫存器
mov al,0遮蔽所有中斷
out dx, al
mov dx, offset disp ;顯示接收提示資訊
mov ah, 9
int 21h
mov dx,3f8h讀接收緩衝器內容,不處理
in al, dx
lop: mov dx,3fdh讀線路狀態暫存器
inal, dx
test al,1eh測試接收錯誤?
jnz er有錯誤,轉錯誤顯示
test al,01h無錯誤,則測試接收資料準備好?
jzlop未準備好則迴圈測試
mov dx,2f8h準備好則接收字元
in al,dx
and al,7fh
cmp al,'p判斷接收結束嗎?
jz over結束轉over
movsi],al未結束則存入緩衝區
inc si
mov dl,al顯示該字元
mov ah,02
int 21h
jmp lop
er: movdx,2f8h清標誌位
in al,dx
mov dx,offset error ;顯示錯誤資訊
mov ah,9
int 21h
jmp lop
over: mov dl,al
mov ah,2
int 21h
mov ah,4ch返回dos
int 21h
code ends
end start
並行通訊和序列通訊簡介
目前電梯訊號的傳送方式歸納起來有採用了資料傳輸中的並行通訊和序列通訊2種技術。下面就這2種通訊方式在電梯上的應用作一分析。1.並行通訊所謂並行通訊指的是資料以成組的方式在多個並行通道上進行傳輸。每乙個訊號源泉點到訊號接收埠幾乎都獨佔1根資料通訊線路。目前國內中 低檔次電梯控制系統大多採用了點對點的形...
其它程序通訊方法
一般的檔案訪問函式 close,read,write 等可用於fifo.當開啟fifo時,非阻塞標誌 o nonblock 沒有使用o nonblock訪問要求無法滿足時程序將阻塞 如果試圖讀取空的fifo,將導致程序阻塞。使用o nonblock,訪問要求無法滿足時不阻塞,立刻出錯返回,errno...
程序間通訊 linux
程序間通訊 1,使用共享記憶體 共享記憶體允許兩個或更多程序共享一給定的儲存區。因為資料不需要在各個程序之間複製,所以這是最快的一種程序間通訊方式。通過mmap 可以將檔案對映到不同的程序空間中,將他們作為多個程序共享的記憶體實現程序間通訊。利用mmap 進行程序間的資訊互動是無格式的,可以自己定義...