1
Я работаю над домашним заданием, где мне нужно случайно напечатать 20 строк из 20 символов RANDOM на экране. Я чрезвычайно новичок в языке ассемблера и не понимаю, почему мой цикл не закончится, хотя у меня есть ecx, равный 20, и каждый раз уменьшаюсь.Сборка бесконечной петли [HOMEWORK]
В настоящее время экран печатает случайные буквы правильно, но никогда не прекращает печать.
Мой код выглядит следующим образом:
INCLUDE Irvine32.inc
.data
buffer byte 20 dup(?) ;buffer of size 20 initialized ?
L dword 20 ;length of size 20
.code
main proc
l1:
mov ecx,L ;ecx = 20
call RandomString ;call Random String
dec ecx ;ecx --
cmp ecx,0 ;compare ecx to zero
jne l1 ;jump if not equal back to l1
call WaitMsg ;press any button to continue
exit
main endp
RandomString PROC USES eax ecx edx
mov eax,26 ;eax = 26
call RandomRange ;call RandomRange
add eax, 'A' ;eax = random number between 0 and 25 + 'A'
mov buffer,al ;buffer = random letter
mov edx, OFFSET buffer ;edx = address of buffer
call WriteString ;write string to console
ret
RandomString ENDP
end main
отлично! это было именно это! Очень признателен! – GreenFerret95
@ GreenFerret95, когда кто-то дает содержательный ответ, вы должны отметить его как таковой, таким образом, когда другие читатели смотрят на список вопросов, они могут легко идентифицировать те, у которых есть ответы. Если есть более одного ответа, тот, который вы выбрали, будет отображаться непосредственно под вашим вопросом. –