我有一个项目,我想输入一个数字并说我输入 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
现在我只需要另一边。