У меня есть проект, в котором я хочу ввести число и сказать, что я ввожу 3, он дает вам результат,
ZYX**XYZ
ZY****YZ
Z******Z
И 5 даст вам
ZYXWV**VWXYZ
ZYXW****WXYZ
ZYX******XYZ
ZY********YZ
Z**********Z
В моем проекте я не думаю, что мой инструктор позволит мне использовать массив, или, по крайней мере, еще нет, но вот моя идея.
Я думал сделать строку для числа, так что, скажем, я получаю 3. Я бы произвел ZYX * и просто перевернул его, чтобы получить другую половину треугольника. Единственное, я не знаю, как менять буквы по одной на звезды. Я думаю об использовании циклов, чтобы сделать это, но не знаю, как это сделать. Я просто знаю, что следующей строкой будет 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
Теперь мне просто нужна другая сторона.