←前へ :  INDEX :  次へ→


ちょっと余談です。呼び飛ばしても何の支障もありません。呼び飛ばす場合はここをクリック

  前のページでは「5+3=8」をやりました。だからディスプレイには'8'が表示されました。では「8+5」をやるとどうなるでしょうか?

  「8+5=13=0Dh」です。その後に30hを加えると3Dhになり、これは「=」を意味します。したがって13とは表示せずに、「=」をディスプレイに表示します。これでは足し算の意味がないので何とかしたいですね。「ADD」の後に、「AAA」という命令を実行すると、AH=01、AL=03という風に補正してくれます。

START:
	mov	ah,0            ;AH <=00h
	mov	al,DATA1        ;AL <=08h
	add	al,DATA2        ;AL <=0Dh
	aaa	                ;AH <=01h, AL <=03h

	add	ax,3030h        ;AH <='1'  AL <='3'
	mov	dl,ah           ;DL <='1'
	mov	dh,al           ;DH <='3'
	mov	ah,2
	int	21h             ;'1'表示
	mov	ah,2
	mov	dl,dh           ;DL <='3'
	int	21h             ;'3'表示

	mov	ax,4c00h
	int	21h             ;終了

DATA1	byte	8
DATA2	byte	3
  「AAA」という命令はオペランドをとりません。ALにのみ動作してくれます。

←前へ :  INDEX :  次へ→