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


6-3.練習問題1

問題
キーボードから1文字入力し、その文字コードと、その文字コードを左右反転させた文字コードを表示せよ。
例:'A'を入力したら、「A:41h->82h」と表示する。

解答

START:
	mov	ah,1
	int	21h		;入力
	push	ax		;入力文字ストック

	mov	ah,2
	mov	dl,':'
	int	21h		;出力
	call	BYTEHEX
	call	DISP
	mov	ah,2
	mov	dl,'h'
	int	21h
	mov	ah,2
	mov	dl,'-'
	int	21h
	mov	ah,2
	mov	dl,'>'
	int	21h

	pop	ax		;入力文字ポップ
	call	REVERSE		;逆にする
	mov	al,dl
	call	BYTEHEX
	call	DISP

	mov	ax,4c00h
	int	21h		;終了

DISP:				;AH,ALを表示
	mov	dx,ax
	push	dx
	mov	dl,dh
	mov	ah,2
	int	21h		;10hの位表示
	pop	dx
	mov	ah,2
	int	21h		;1hの位表示
	ret

BYTEHEX:				;ALを表示できるように変換し、
				;AHとALに格納する
	mov	ah,al
	shr	ah,4
	and	ah,00001111b
	add	ax,3030h
	cmp	ah,'9'
	jbe	BYTEHEX_1
	add	ah,7
BYTEHEX_1:
	cmp	al,'9'
	jbe	BYTEHEX_2
	add	al,7
BYTEHEX_2:
	ret

REVERSE:
	mov	cx,8
REVERSE_1:
	sal	al,1
	rcr	dl,1
	loop	REVERSE_1
	ret	

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