2013-02-16 51 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