= [TASM OR MASM은 내 코드에 영향을 미치지 않습니다.] DOSBOX를 사용하고 있습니다.시리얼 통신으로 문자열 보내기 UART-8250 x8086 [조립품]
좋아요, 그래서 저는 시리얼 통신 코드 게임을하고 있는데, 실제로 "사용자 이름"을 묻는 부분이 있습니다. 다른 플레이어도 그의 이름을 입력 할 때까지 기다리겠습니다. 주 메뉴.
여기에서 문제는 "PlayerName"을 다른 PC에 보내고 "PartnerName"으로받을 수 없다는 것입니다.
이
내 코드의 일부이다 :Welcome proc ;Welcome Screen !
mov al,03h
mov ah,00
int 10h
mov ah,02h
mov dh,10d
mov dl,20d
mov bh,00d
int 10h
mov ah,09h
lea dx,WelcomeMsg
int 21h
mov dh,11 ;Row number
mov dl,28 ;Column number
mov bh,0
mov ah,2
int 10h
;Reading PlayerName
mov ah,0ah
lea dx,PlayerName
int 21h
;Adding $ at the end, so we can print it later
mov bx,00
mov bl,PlayerName[1]
mov PlayerName[bx+2],'$'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CHECKING FOR NAME;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SendingName: ;Sending Player Name
; mov dx,3fdh
; in al,dx
; test al,01000000b
; jnz SendNameDone
; jmp SendingName
; SendNameDone:
; lea ax,[PlayerName]
; mov dx,3f8h
; out dx,ax
; ReceivingName: ;Receiving PLayer Name
; mov dx,3fdh
; in al,dx
; test al,00000001b
; jnz ReceiveNameDone
; jmp ReceivingName ;This will occur if nothing is received.
; ReceiveNameDone:
; mov dx,3f8h
; in ax,dx
; mov si,ax
; mov di,OFFSET PartnerName
; mov cx,15
; movsb
; mov dh,1 ;Row number
; mov dl,1 ;Column number
; mov bh,0
; mov ah,2
; int 10h
; mov ah,09h
; lea dx,PartnerName
; int 21h
; mov ah,01h
; int 21h
;Confirm Message
mov dh,13 ;Row number
mov dl,18 ;Column number
mov bh,0
mov ah,2
int 10h
mov ah,09h
lea dx,WelcomeMsg2
int 21h
mov ah,01h
int 21h
ret
Welcome endp
그리고 당신이 혼동하는 경우, 내 DataSegment의 일부있다 : 여기
WelcomeMsg db 'Welcome, Please Enter Your Name: $'
WelcomeMsg2 db 'Please Press Any Key To Continue!$'
문제가 내 "댓글 파트" - 그것이 잘못되었다는 것을 알고 있습니다 - 무한 루프가되는 것 같습니다.
당신이 도울 수 있다면 어떻게 시리얼 통신을 통해 "PlayerName"을 보내고 "PartnerName"으로받을 수 있습니까? 매우 감사 할 것입니다!
아직 도움이 :( – Cereal