Эта программа должна сравнивать массив из пяти элементов с минимальными и максимальными значениями для каждого элемента массива. Я не знаю, почему, что, когда я сравниваю массив максимального массива и массив мин я получаю эту ошибкуОшибка MASM: ошибка A2032 Specificed size
1>......\Users\ross\Desktop\chapter6HW.asm(97): error A2032: invalid......\Users\ross\Desktop\chapter6HW.asm(99)r specified size
Вот мой код. Я отметил, где ошибка с ** **
.
INCLUDE Irvine32.inc
.data
str1 BYTE "Invalid",0
str2 BYTE "Valid", 0
str3 BYTE "The PIN under Validation is:",0
minArr BYTE 5,2,4,1,3
maxArr BYTE 9,5,8,4,6
arr1 BYTE 6,4,5,3,5
arr2 BYTE 1,4,5,3,5
arr3 BYTE 8,4,5,2,5
arr4 BYTE 5,4,9,2,6
.code
main PROC
call Clrscr
mov esi,OFFSET arr1
call Display
call Validate_PIN
cmp eax,0
je L1
mov edx,OFFSET str1
call WriteString
call Crlf
L1:
mov edx,OFFSET str2
call WriteString
call Crlf
call Crlf
mov esi,OFFSET arr2
call Display
call Validate_PIN
cmp eax,0
je L2
mov edx,OFFSET str1
call WriteString
call Crlf
L2:
mov edx,OFFSET str2
call WriteString
call Crlf
call Crlf
mov esi,OFFSET arr3
call Display
call Validate_PIN
cmp eax,0
je l3
mov edx,OFFSET str1
call WriteString
call Crlf
L3:
mov edx,OFFSET str2
call WriteString
call Crlf
call Crlf
mov esi,OFFSET arr4
call Display
call Validate_PIN
cmp eax,0
je L4
mov edx,OFFSET str1
call WriteString
call Crlf
L4:
mov edx,OFFSET str2
call WriteString
call Crlf
call Crlf
exit
main ENDP
Validate_PIN PROC
mov edi,0
mov ecx,5
L1:
**cmp [esi],minArr[edi]**
jb L2
**cmp [esi],maxArr[edi]**
ja L2
inc esi
inc edi
cmp edi,5
je L3
loop L1
L2:
mov eax,edi
inc eax
jmp L4
L3:
mov eax,0
L4:
ret
Validate_PIN ENDP
Display PROC
mov edx,OFFSET str3
call WriteString
mov ecx,5
L1:
mov eax,[esi]
call WriteDec
inc esi
loop L1
call Crlf
ret
Display ENDP
End main
Почему? Это потому, что они не одного размера? – riskitall69
Нет. Это потому, что в общем случае вы не можете выполнять операции, где оба источника и адресаты являются операндами памяти. Если у вас есть операнд памяти, тогда другой операнд обычно должен быть регистром или немедленно. – Michael