数字を入力したいプロジェクトがあり、3 を入力すると、次の出力が得られます。
ZYX**XYZ
ZY****YZ
Z******Z
そして、5はあなたを与えるでしょう
ZYXWV**VWXYZ
ZYXW****WXYZ
ZYX******XYZ
ZY********YZ
Z**********Z
私のプロジェクトでは、インストラクターが配列の使用を許可しないか、少なくともまだ許可していないと思いますが、ここに私の考えがあります。
数字の文字列を作成することを考えていたので、3 を取得するとします。ZYX* を作成し、単純に逆にして、三角形の残りの半分を取得します。ただ、文字を 1 つずつ星に変更する方法がわかりません。ループを使用してそれを行うことを考えていますが、その方法がわかりません。次の文字列が ZY** であることを知っているだけで、それを元に戻すだけです。
誤解しないでいただきたいのですが、私は皆さんに私のためにそれを行うように求めているわけではありませんが、それに取り組む方法についての指針やヒントを教えてください。ありがとうございました。
ここまで、皆様のおかげでここまでたどり着くことができました。
TITLE MASM Template (main.asm)
; Description:
;
; Revision date:
INCLUDE Irvine32.inc
.data
x DWORD ?
msg BYTE "Please input a number: " ,0dh,0ah,0
.code
;crlf
main PROC
call Clrscr
MOV edx, OFFSET msg ; Moves message to input number into register
call WriteString ; Displays message on screen to prompt user to input number
call readInt ; Take the number that the user inputs
MOV x,eax ; Store it into x
MOV ecx, eax ; For the loop counter
MOV al, 'Z' ; Move Z to the register
L2:
MOV al, 'Z' ; Resets al to z for loop
L1: ; Start of the loop with label L1
call WriteChar ; To write the letters
;call crlf ; To put in 'enter'
SUB al, 1 ; To Move the next char going downward
LOOP L1
MOV al, ' '
call WriteChar
MOV ecx, x ; Resets ecx for outside loop
SUB x, 1 ; Decrements x for counter
call crlf ; To be tidy
LOOP L2
exit
main ENDP
END main
今、私は反対側が必要です。