我有一个项目,我想输入一个数字,说我进入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
现在我只需要另一边。
我在这里看不到任何代码,所以我认为你是完全新装配。你可能想从一个简单的hello世界程序开始。 “...使用阵列”意味着什么?一个字符串是一个数组,对吗?无论如何,在汇编中它只是一块内存,除非你把你的字符串放入一个或多个寄存器。 – nrz 2013-04-18 07:51:15