16位汇编将字符发送到串口

时间:2013-02-16 06:02:46

标签: assembly x86 serial-port masm

我使用hdd设备监视工作室在虚拟串行端口(COM7和COM8)上创建了桥接器,并希望使用16位汇编[using masm]发送和接收数据。 为了开始,我写了这个代码,将一个字符发送到COM7并听取这个端口,但没有东西传输。我测试了这个端口的监视器,并使用另一个软件发送数据。 这是代码:

.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  

我哪里错了?

1 个答案:

答案 0 :(得分:0)

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

  

IBM BIOS最多支持四个不同的串行通信端口   (硬件最多支持八个)。一般来说,大多数PC都有一个或   安装了两个串口(COM1:和COM2 :)。 Int 14h支持四个   子功能 - 初始化,传输角色,接收角色,   和状态。对于所有四种服务,串行端口号(一个值为   范围0..3)在dx寄存器中(0 = COM1:,1 = COM2:等)。诠释   14h期望并返回al或ax寄存器中的其他数据。

它不支持COM7/COM6