FizzBuzz その6−1 たぶんファイナル(コードのみ)


CODE SEGMENT
ASSUME cs:CODE,ds:CODE
ORG 100H
START: mov cx,1
LOOP1:
mov ax,cx ;axにカウントを入れる。
cwd
mov bx,0FH
div bx
cmp dx,0
jne FIZZ

mov ah,09H ;文字列出力FC
mov dx,OFFSET MSG1 ;文字列オフセット設定
int 21H
jmp NEXT
FIZZ:
mov ax,cx ;axにカウントを入れる。
cwd
mov bx,03H
div bx
cmp dx,0
jne BUZZ

mov ah,09H ;文字列出力FC
mov dx,OFFSET MSG2 ;文字列オフセット設定
int 21H
jmp NEXT

BUZZ:
mov ax,cx ;axにカウントを入れる。
cwd
mov bx,05H
div bx
cmp dx,0
jne NUMBER

mov ah,09H ;文字列出力FC
mov dx,OFFSET MSG3 ;文字列オフセット設定
int 21H
jmp NEXT
NUMBER:
mov ax,cx ;axにカウントを入れる。
cwd
mov bx,0AH
div bx
push dx
cwd ;なんかこのへんバグりそうな気がするな
div bx
push dx
mov bx,ax
add bx,30H
mov ah,02H
mov dx,bx
int 21H
pop dx
add dx,30H
int 21H
pop dx
add dx,30H
int 21H
mov dl,0DH ;改行
int 21H
mov dl,0AH
int 21H
NEXT:
inc cx ;cx(カウンタ)をインクルード
cmp cx,100 ;cx(カウンタ)が100以下か判定
jle LOOP1

mov ah,4CH ;終了
int 21H

MSG1 DB "FizzBuzz",0DH,0AH,'$'
MSG2 DB "Fizz",0DH,0AH,'$'
MSG3 DB "Buzz",0DH,0AH,'$'

CODE ENDS
END START