TITLE SERIAL DATA COMMUNICATION BETWEEN TWO PCS .MODEL SMALL .STACK .DATA MESSAGE DB 'Serial communication via COM2, 4800 ,No P,1 Stop,8-BIT DATA.',0AH,0DH DB ' ANY KEY PRESS IS SENT TO OTHER PC.',0AH,0DH DB ' PRESS ESC TO EXIT','$' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX MOV AH,09 MOV DX,OFFSET MESSAGE INT 21H ;initializing COM 2 MOV AH,0 ;initialize COM port MOV DX,1 ;COM 2 MOV AL,0C3H ;4800 ,NO P,1 STOP,8-BIT DATA INT 14H ;checking key press and sending key to COM2 to be transfered AGAIN: MOV AH,01 ;check for key press using INT 16H ,AH=01 INT 16H ;if ZF=1, there is no key press JZ NEXT ;If no key go check COM port MOV AH,0 ;yes, there is a key press, get it INT 16H ;notice we must use INT 16H twice,2nd time ;with AH=0 to get the char itself. AL=ASCII char pressed CMP AL,1BH ;is it esc key? JE EXIT ;yes EXIT MOV AH,1 ;no. send the char to COM 2 port MOV DX,01 INT 14H ;check COM2 port to see there is char. if so get it and display it NEXT: MOV AH,03 ;get COM 2 status MOV DX,01 INT 14H AND AH,01 ;AH has COM port status, mask all bits except D0 CMP AH,01 ;check D0 to see if there is a char JNE AGAIN ;no data, go to monitor keyboard MOV AH,02 ;yes, COM2 has data: get it MOV DX,01 INT 14H ;get it MOV DL,AL ;and display it using INT 21H MOV AH,02 ;DL has char to be displayed INT 21H JMP AGAIN ;keep monitoring keyboard EXIT: MOV AH,4CH ;exit to DOS INT 21H MAIN ENDP END