我正在做一个多人游戏,在2台电脑上工作,他的通信是通过两个COM端口,想法是我想发送和接收16位数据,但最高值是8,所以我需要划分他们,但它是造成我的错误
recieve proc
mov data_in, 0 ; variable to store data
mov dx , 03F8H
in al , dx
mov bl, al
mov byte ptr data_in, bl
mov cx,200 ; just delay
kk:loop kk
mov dx , 03F8H
in al , dx
mov bh, al
mov byte ptr data_in + 1, bh
ret
recieve endp
个字符
1条答案
按热度按时间zaqlnxep1#
当接收被调用时,它如何知道数据是可用的?它应该在阅读接收保持寄存器之前检查接收数据可用标志。
对于延迟循环,它应该读取接收数据可用标志以等待下一个字节变为可用,而不是循环固定的迭代次数。200次迭代远远不够。
字符串
发送类似,但它检查发送保持寄存器空标志。
型