# #assembly #x86 #infinite-loop #cpu-architecture
Вопрос:
Меня попросили написать программу, которая просит пользователя ввести свое имя, целое число и другое целое число, сложить два целых числа и затем отобразить сумму. Предполагается, что программа сделает это три раза, очистит экран после каждой итерации и установит курсор в середине экрана. Программа размещает курсор только в середине экрана для первого вопроса, а также бесконечно зацикливается. Пожалуйста, помогите исправить код.
INCLUDE Irvine32.inc
.data
prompt1 BYTE "Enter Your Name:",0
var1 byte 20 DUP(?)
bytecount DWORD ?
prompt BYTE "Enter Integer:",0
resultMsg BYTE "Sum of the two integers is:",0
Int1 DWORD ?
Int2 DWORD ?
Sum DWORD ?
.code
main PROC
MOV ECX,3
L1:
call Clrscr
;Move cursor to the middle of the screen
MOV DH,13
MOV DL,40
CALL GoToXY
MOV EDX,OFFSET prompt1
Call WriteString
MOV EDX,OFFSET var1
MOV ECX,sizeof var1
Call ReadString
MOV EDX, OFFSET prompt
CALL WriteString
CALL ReadInt
MOV Int1,EAX
CALL WriteString
CALL ReadInt
MOV Int2,EAX
;Calculate Sum
MOV EAX,Int1
ADD EAX,Int2
MOV Sum,EAX
;display sum
MOV EDX, OFFSET resultMsg
call WriteString
MOV EAX,Sum
call WriteInt
call Crlf
call WaitMsg
loop L1
exit
main ENDP
END main
Комментарии:
1.
MOV ECX,sizeof var1
переигрываетecx
, что является вашим счетчиком циклов.2. Спасибо, цикл заканчивается после трех итераций