반응형
.MODEL SMALL ;메모리크기 설정
.STACK
.CODE ;여기 아래부터 코드시작
MOV AH,1 ;사용자로부터 문자하나를 입력받을 준비. 입력받은 문자는 AL 레지스터에 저장된다.
INT 21h
CMP AL,40h ;입력받은 문자가 대문자인가 소문자인가?
JG ISAA ;일단 40h부터 크다면 세부 탐색으로 넘기기 (소문자인가 대문자인가)
JZ DISP2 ;해당사항 없으면 그대로 출력
JL DISP2 ;해당사항 없으면 그대로 출력
ISAA: ;세부탐색구간
CMP AL, 5Bh ;5b아스키코드와 비교해보자.
JG LOWER ;입력한 문자의 아스키코드값이 더 크다? 우선 소문자로 판별.
JL UPPER ;작다면 대문자로 판별.
UPPER: ;입력한 문자가 대문자로 결정됐을때.
ADD AL,20h ;20h을 더해서 소문자로 만들어줌
CALL DISP ;출력 프로시저를 호출한다.
LOWER: ;입력한 문자가 일단은 대문자가 아니라고 판별됐을때 오는곳.
CMP AL,60h ;60h보다 같거나 작은가?
JLE DISP ;그렇다면 그냥 출력 (소문자가 아님.)
CMP AL,7Bh ;7Bh와 같거나 큰가?
JGE DISP ;그렇다면 그냥 출력 (소문자가 아님.)
SUB AL,20h ;위 두 검사에도 해당되지 않으면 소문자라는 뜻이므로 20h을 빼서 대문자로 만들어줌
CALL DISP ;출력 프로시저 호출한다.
DISP2:
DISP PROC NEAR ;출력 프로시저
MOV DL,AL ;AL 레지스터에 있는 정보를 DL 레지스터로 옮겨준다.
MOV AH,02 ;AH 레지스터에 화면에 한 글자를 출력하는 값을 넣어준다.
INT 21h ;실행
DISP ENDP ;출력 프로시저의 끝
END ; 코드 끝
소문자 a를 입력하면 대문자 A를 되돌려주고,
대문자 A를 입력하면 소문자 a 를 되돌려 줍니다.
코드 작성은 emu8086 에뮬레이터로 하였습니다.
반응형
'어셈블리어 공부용 > x86 어셈블리어(ASSEMBLY)' 카테고리의 다른 글
emu8086을 이용한 어셈블리어 연습 [16진수를 입력하여 16진수로 저장하기] (0) | 2019.08.15 |
---|---|
emu8086으로 어셈블리어 연습 [10진수를 입력받아 16진수로 저장하기.] (0) | 2019.08.15 |
DOS DEBUG로 어셈블리어 연습 [z에서 a까지 역순으로 알파벳 출력하기] (0) | 2019.08.15 |
DOS DEBUG로 어셈블리어 연습 [아스키코드전체를 2번만 출력하기] (0) | 2019.08.15 |
DOS DEBUG로 어셈블리어연습 [아스키 문자들 전부 무한히 표시하기] (0) | 2019.08.15 |
댓글