←練習問題へ :  INDEX :  次ページへ→


4-4.練習問題 解答

問題:キーボードから2つの1桁の数字を入力し、このかけ算の結果を表示させよ。
ヒント:

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

START:
	mov	ah,1
	int	21h		;key in
	sub	al,'0'		;文字コードから数値へ
	cmp	al,9
	ja	BYEBYE		;9より上(数字以外が入力された場合は「BYEBYE」へ飛ぶ)
	mov	bl,al

	mov	ah,2
	mov	dl,0dh
	int	21h
	mov	ah,2
	mov	dl,0ah
	int	21h		;改行

	mov	ah,1
	int	21h		;Key in
	sub	al,'0'		;文字コードから数値へ
	cmp	al,9
	ja	BYEBYE		;9より上(数字以外が入力された場合は「BYEBYE」へ飛ぶ)

	mul	bl		;かけ算の結果がAXに(1桁同士のかけ算は81以下なのでAH=0)
	mov	cl,10
	div	cl		;10で割った結果、商(10の位)がALに、余り(1の位)がAHに入る
	mov	bx,ax

	mov	ah,2
	mov	dl,0dh
	int	21h
	mov	ah,2
	mov	dl,0ah
	int	21h		;改行

	cmp	bl,0
	jz	ICHINOKURAI	;10の位が0ならばジャンプ

	mov	ah,2
	mov	dl,bl
	add	dl,'0'		;文字コードに変換
	int	21h		;10の位表示

ICHINOKURAI:
	mov	ah,2
	mov	dl,bh
	add	dl,'0'		;文字コードに変換
	int	21h		;1の位表示

BYEBYE:
	mov	ax,4c00h
	int	21h		;終了
		
	ENDS
	END	START
; 一部のコンパイラでは、
;CODE	ENDS
;	END	START
;と記述しなければいけないようです

←練習問題へ :  INDEX :  次ページへ→