双机均采用可编程并行接口芯片8255构成接口电路,双方的8255把对方视为I/O设备。从甲机键盘上输入的字符,通过并口传送到乙机,并在乙机的屏幕上显示出来。双方按ESC键,停止传送,并退出。
本次通信非常简单,属于8255入门阶段,难点就是需要两台完好的pc机和8255芯片。接线方式如下,及发送方采用方式1,接收方采用方式0.其实发送方也可以用方式0.无非是程序多加几条if语句而已。
话不多说,上代码:
send代码:
io8255a equ 288h
io8255b equ 28bh
io8255c equ 28ah
code segment
assume cs:code
start:
mov dx,io8255b
mov al,0a0h
out dx,al ;A组方式1输出
trsmt:
mov ah,01
int 21h ;输入
mov dx,io8255a
out dx,al
cmp al,1bh
je exit
jmp trsmt
exit:mov ah,4ch
int 21h
code ends
end start
receive方代码:
io8255a equ 288h
io8255b equ 28bh
io8255c equ 28ah
code segment
assume cs:code
start:
mov dx,io8255b
mov al,98h ;方式0 a口输入 pc0到pc3输出 pc4到pc7是输入
out dx,al
mov al,01h ;给pc0值1 我还没接受
out dx,al
receive:mov dx,io8255c
in al,dx
and al,10h
jnz receive ;结果不为0 读pc4看发送方的pc7即obfa输出缓冲区是否满了 满了就读
mov dx,io8255a
in al,dx
cmp al,1bh
je exit
mov ah,al
mov dl,al
mov ah,02
int 21h
mov dx,io8255b
mov al,00h
out dx,al ;给pc0赋值0 告诉外设我取走了
nop
mov al,01h ;给pc0值1 继续接受
out dx,al
jmp receive
exit:mov ah,4ch
int 21h
code ends
end start