e7c CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG ORG 100h Start: jmp begin prompt db 0Dh,0Ah,'Choose port (COM1=1, COM2=2, COM3=3, COM4=4): $' outstr db 0Dh,80 dup (32) db 0Dh,0Ah,0Dh,0Ah,'Status COM is: ' val db 4 dup (0),'H',0Dh,0Ah,0Dh,0Ah,'$' text db 'Data Ready : N',0Dh,0Ah db 'Overrun Error : N',0Dh,0Ah db 'Parity Error : N',0Dh,0Ah db 'Framing Error : N',0Dh,0Ah db 'Break Detected : N',0Dh,0Ah db 'Empty transmit holding register : N',0Dh,0Ah db 'Empty transmit shift register : N',0Dh,0Ah db 'Timeout : N',0Dh,0Ah db 80 dup (196) db 'Delta Clear To Send : N',0Dh,0Ah db 'Delta Data Set Ready : N',0Dh,0Ah db 'Trailing edge ring detector : N',0Dh,0Ah db 'Delta receive line signal detect: N',0Dh,0Ah db 'Clear To Send : N',0Dh,0Ah db 'Data Set Ready : N',0Dh,0Ah db 'Ring indicator : N',0Dh,0Ah db 'Received line signal detect : N',0Dh,0Ah db 0Dh,0Ah txtlen equ $-text begin: mov ah,09H ;Write string to screen mov dx,offset prompt int 21H mov ah,00H int 16H and ax,0ffh cmp al,31h jge lb1 jmp ending lb1: cmp al,34h jle lb2 jmp ending lb2: mov dx,ax mov bp,offset outstr mov byte ptr[bp+95],dl sub dx,31h mov ah,03H ;Get status COM4 int 14H push ax mov bp,offset val mov bl,ah ;Calculate ASCII values call calc mov bl,al call calc mov ah,09H ;Write string to screen mov dx,offset outstr int 21H pop ax push ax mov bp,offset text mov si,34 mov dl,2 mov al,1 mov cx,8 mov bl,ah rslp: test bl,al jz lb3 mov byte ptr[bp+si],'Y' lb3: mul dl add si,37 loop rslp add si,80 pop ax mov bl,al mov al,1 mov cx,8 modlp: test bl,al jz lb4 mov byte ptr[bp+si],'Y' lb4: mul dl add si,37 loop modlp mov ah,40H ;Write text mov bx,01H ;Stdout mov cx,txtlen mov dx,offset text int 21H mov bp,offset text mov si,34 mov cx,8 rsclr: mov byte ptr[bp+si],'N' add si,37 loop rsclr add si,80 mov cx,8 modclr: mov byte ptr[bp+si],'N' add si,37 loop modclr jmp begin ending: mov ax,4c00h ;That's it! int 21H calc: mov dl,bl mov cl,4 shr dl,cl ;We want the left character and dl,0Fh add dl,30h mov byte ptr[bp],dl inc bp mov dl,bl and dl,0Fh ;No shift here add dl,30h mov byte ptr[bp],dl inc bp ret CSEG ENDS END Start . 0