키보드에서 3 개의 문자열을 읽고 2 개의 문자열을 소문자로 표시하고 마지막 하나를 대문자로 표시하는 프로그램을 작성하려고합니다. 여기까지 지금까지 얻은 것이 있습니다. 문자열을 읽을 수는 있지만 모든 것을 대문자로 변환합니다. 어쨌든 마지막 문자열 만 변환 할 수 있습니까? 미리 감사드립니다.어셈블리 문자열을 분할하십시오. x86 16 비트
.MODEL SMALL
.DATA
MSG DB 0DH,0AH, 'ENTER A STRING: $'
MSG2 DB 0DH,0AH, ' YOUR STRING IS :-----> : $'
STR1 DB 255 DUP(?)
.CODE
BEGIN:
MOV AX,@DATA
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA SI,STR1
MOV AH,01H
READ:
INT 21H
;MOV BL,AL
CMP AL,0DH
JE DISPLAY
SUB AL,20H
MOV [SI],AL
INC SI
;CMP BL,0DH
JMP READ
DISPLAY:
MOV AL,'$' ;caracter '$'
MOV [SI],AL ;
LEA DX,MSG2
MOV AH,09H
INT 21H
LEA DX,STR1
MOV AH,09H
INT 21H
; MOV AH,4CH
; INT 21H
.EXIT
END BEGIN
저는 TASM을 사용하고 있습니다.
* 마지막 문자열 만 변환 하시겠습니까? * 물론 있습니다. 한 가지 방법은 처음 두 문자열의 끝에서 위치를 추적하는 것이므로 입력을 읽은 후에 마지막 문자열을 반복 할 수 있습니다. –
미안하지만, 당신은 내 풍자를 힘들게합니다 ... "아니오, 컴퓨터의 모든 문자열은 이제 대문자 여야합니다." 당신은 기본적으로 자신의 질문에 대답했습니다. 처음 두 문자열을 변환하지 마십시오. 그러면 세 번째 문자열 만 변환됩니다. 그것을 계산으로 생각하고 몇 가지 수식, 카운터, 숫자 조작으로 문제를 해결하십시오 ... 심지어 문자열은 ASCII 인코딩의 연속 바이트 값 (0-255)의 스트림입니다. 그래서 특정 문자열에서만 뭔가를하고 싶다면 먼저 문자열 시작/정지 (공간 당?)를 결정하는 방법을 먼저 정의하십시오. 그것들을 센다. 세 번째로 대문자 실행 – Ped7g
그리고'sub al, 20h'는 "대문자"와 조금 다르다.''A ''와 같이 대문자로 어떻게 할 것인가? ''AND''가 어떻게 작동 하는지를 확인한 다음 ASCII 테이블을 봅니다 ...이 작업을 위해 특별히 설계되었으므로''a ''가''OR '0x20' 인 이유이고' 'Z'+ 1'. – Ped7g