2013-02-16 53 views
0

我用虚拟串行端口(COM7 & COM8)在hdd device monitor studio创建了网桥,并希望使用16位程序集[使用masm]发送和接收数据。 开始我写了这段代码发送一个字符到COM7并且听这个端口但是没有任何东西传输。我用另一个软件发送数据,测试了这个端口的监视器。 这是代码:16位程序集发送字符到串口

.MODEL small 
.STACK 100h 
.data 
.code 
_start: 
mov ax,@data 
mov ds,ax 
mov ah, 0   ;Initialize opcode 
mov al, 11100011b ;Parameter data. 
mov dx, 6   ;COM7: port. 
int 14h 
again: 
    mov dx, 6   ;Select COM7: 
    mov al, 'm'  ;Character to transmit 
    mov ah, 1   ;Transmit opcode 
    int 14h 
    jmp again 
mov ah,1 
int 21h 
END _start 

我的错在哪里?

+0

你确定关于init参数吗? 8个数据位,2个停止位,无奇偶校验和600bps?此外,你有一个无限循环AFAICS – 2013-02-16 07:07:45

+0

我把它设置为[link](http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH13/CH13-3.html#HEADING3-7) – 2013-02-16 08:08:07

+0

玩弄这些参数,它们取决于您的实际硬件。对于初学者,尝试减少速度,也许只尝试一个停止位等...一次更改一个参数 – 2013-02-16 08:18:12

回答

0

http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH13/CH13-3.html#HEADING3-1

的IBM BIOS支持最多四个不同的串行通信端口 (硬件多达八个支持)。一般来说,大多数电脑都安装了一个或两个串行端口(COM1:和COM2 :)。 Int 14h支持四个 子功能 - 初始化,发送字符,接收字符, 和状态。对于全部四种服务,串行端口号( 中的值为0..3)位于dx寄存器中(0 = COM1:,1 = COM2:等)。 Int 14h预计并返回al或ax寄存器中的其他数据。

它不支持COM7/COM6

+0

我测试过但不起作用!感谢您的尝试! – 2013-02-16 07:37:00

+1

@majidgeek我更新了答案... – 0x90 2013-02-16 09:35:50

+0

谢谢0x90,我试过不可能的事!现在我决定使用“高级虚拟COM端口”。我再次感谢你! – 2013-02-16 10:04:13