내 루프에 문제가있어서 코드가 길어서 오류 jump destination too far : by 3 byte(s)
이 발생합니다. ı 제거시 :건너 뛰기 대상이 너무 멀습니다 : by 3 바이트
mov edx,offset str1
call writestring
이 부분은 PROC 아래에 있으며 오류가 없습니다. 그러나 ı이 문자열 사용자가 음수를 입력해야 메시지를 보낼 수 있습니다. 내가 어떻게 할 수있는?
INCLUDE Irvine32.inc
.data
money dword 200,100,50,20,10,5,1
str1 byte "Enter the amounts for each value of money : ",0
str2 byte "The sum of your moneys are:",0
total dword 0
buffer dword 1000 dup(0),0
str3 byte "Do not enter neg number ",0
.code
main PROC
mov edx,offset str1
call writestring
call crlf
mov ecx,lengthof money
mov esi,0
mov edi,0
start1:
jmp continue
don:
push ecx
mov edx,ecx
mov edx,0
mov edx,7
sub edx,ecx
mov ecx,edx
mov edi,0
mov esi,0
start2:
mov eax,money[esi]
call writedec
mov ebx,eax
mov al,'x'
call writechar
mov eax,buffer[edi]
call writedec
call crlf
add esi,4
add edi,4
loop start2
pop ecx
continue:
;**************************************************
mov edx,0
mov eax,money[esi]
call writedec
mov ebx,eax
mov al,'x'
call writechar
call readint
;***************************************************
sub eax,0
js don
mov buffer[edi],eax
;*************************
mul ebx
add total,eax ;we add each the multiplication to total.
add esi,4 ;increases the index by 4.(because of dword type)
add edi,4
loop start1
mov edx,offset str2
call writestring
mov eax, total
call writedec
exit
main ENDP
END main
오류가 어떤 명령을 의미합니까? – duskwuff
mov edx, offset str1 call writestring – zahit
코드는 LOOP 명령을 사용하지 않아야하는 이유의 좋은 예입니다. –