ユーザーの入力に基づいてアルファベットの文字をピラミッド状に表示するアセンブリ プログラムを作成しています。たとえば、ユーザーが文字 a を入力した場合、出力は a ab abc になります。. . abcdef...z
ユーザーが文字 b を入力すると、次のように出力されます。
b bc bcd bcde . . . bcdefg...z
等々...
以下は私のコードで、反復、ループ、ネストされたループなどについて本当に問題があります。試してみましたが、役に立ちませんでした。私はアセンブリ言語が初めてなので、私のコードは本当にひどいです。
title print_alphabets
ststack segment para stack 'stack'
dw 200h
ststack ends
cdata segment para 'data'
inputMessage db 'Enter a letter to start from: $'
invalidInput db 10, 13, 'You have entered an invalid character. Please run the program again.$'
newline db 10, 13, '$'
cdata ends
ccode segment para 'code'
assume cs: ccode, ss: ststack, ds: cdata
main:
mov ax, cdata
mov ds, ax
mov ah, 09h
lea dx, inputMessage
int 21h
mov ah, 01h
int 21h
mov bl, al
mov ch, 26
mov cl, 26
testinput:
cmp bl, 7ah
jbe loop1
jmp invalid
loop1:
mov ah, 09h
lea dx, newline
int 21h
mov ah, 02h
mov dl, bl
int 21h
dec ch
cmp ch, 25
je loop1
cmp ch, 24
jle loop2
jmp endprog
loop2:
inc dl
mov ah, 02h
mov dl, dl
int 21h
dec cl
cmp cl, 25
je loop1
;repeat loop2 once
cmp cl, 24
je loop2
cmp cl, 23
je loop1
;repeat loop2 twice
cmp cl, 22
je loop2
cmp cl, 21
je loop2
cmp cl, 20
je loop1
;repeat loop2 thrice
cmp cl, 19
je loop2
cmp cl, 18
je loop2
cmp cl, 17
je loop2
cmp cl, 16
je loop1
;repeat loop2 4 times
cmp cl, 15
je loop2
cmp cl, 14
je loop2
cmp cl, 13
je loop2
cmp cl, 12
je loop2
cmp cl, 11
je loop1
;repeat loop2 5 times
cmp cl, 10
je loop2
cmp cl, 9
je loop2
cmp cl, 8
je loop2
cmp cl, 7
je loop2
cmp cl, 6
je loop2
jmp endprog
invalid:
mov ah, 09h
lea dx, invalidInput
int 21h
jmp endprog
endprog:
mov ah, 4ch
int 21h
ccode ends
end main