←練習問題へ :  INDEX :  次の章へ→


5-7.練習問題

  1. キーボードから1文字入力し、アルファベットならば大文字に変換して表示するプログラムを作れ。ただしリターンキーが押されるまで繰り返す。
  2. キーボードから1文字入力し、アルファベットの大文字なら小文字に、小文字なら大文字に変換して表示するプログラムを作れ。ただしリターンキーが押されるまで繰り返す。

ヒント

解答1:大文字に変換

CODE	SEGMENT
	ASSUME	DS:CODE,CS:CODE,ES:CODE,SS:CODE
	.186
	ORG	100h

START:
	mov	ah,8
	int	21h		;文字入力

	cmp	al,0dh
	jz	EXIT		;リターンキーなら終了

	cmp	al,'a'		;↓小文字かどうかのチェック
	jb	DISP
	cmp	al,'z'
	ja	DISP		;↑ここまで

	and	al,11011111b	;to upper charactar

DISP:
	mov	dl,al
	mov	ah,2
	int	21h		;表示

	jmp	short START

EXIT:
	mov	ax,4c00h
	int	21h		;終了

	ENDS
	END	START
; 一部のコンパイラでは、
;CODE	ENDS
;	END	START
;と記述しなければいけないようです

解答2:大文字、小文字を逆転

CODE	SEGMENT
	ASSUME	DS:CODE,CS:CODE,ES:CODE,SS:CODE
	.186
	ORG	100h

START:
	mov	ah,8
	int	21h		;文字入力

	cmp	al,0dh
	jz	EXIT		;リターンキーなら終了

	cmp	al,'A'		;↓アルファベットかどうかのチェック
	jb	DISP
	cmp	al,'Z'
	jbe	XCHANGE
	cmp	al,'a'
	jb	DISP
	cmp	al,'z'
	ja	DISP		;↑ここまで
XCHANGE:
	xor	al,00100000b	;大文字、小文字逆転

DISP:
	mov	dl,al
	mov	ah,2
	int	21h		;表示

	jmp	short START

EXIT:
	mov	ax,4c00h
	int	21h		;終了

	ENDS
	END	START
; 一部のコンパイラでは、
;CODE	ENDS
;	END	START
;と記述しなければいけないようです

←練習問題へ :  INDEX :  次の章へ→