У меня возникли некоторые проблемы с операторами .if, .else и т. Д. Для Assembly.
Мой код должен перевернуть массив чисел на месте, и он должен работать для разных типов данных. У меня есть заявление, чтобы проверить тип данных. Если он имеет тип BYTE, он будет идти в первом операторе if, если это WORD, он будет проходить через следующий, если это DWORD, он будет переходить к третьему. Моя проблема в том, что компилятор выдает ошибки для блоков кода, которые не будут выполнены. В текущем коде у меня есть массив, установленный в байтах, и как таковой он выдает ошибки для последних 2 блоков операторов if. Не могли бы вы дать мне несколько советов, как это исправить.
numbers BYTE 10h, 20h, 30h, 40h, 50h, 60h, 70h, 80h, 90h
L1:
.if (ebx == 1)
mov al, numbers[esi]
xchg al, numbers[edi]
mov numbers[esi], al
.elseif (ebx == 2)
mov ax, numbers[esi]
xchg ax, numbers[edi]
mov numbers[esi], ax
.else
mov eax, numbers[esi]
xchg eax, numbers[edi]
mov numbers[esi], eax
.endif
add esi, (type_of_numbers)
sub edi, (type_of_numbers)
Loop L1