Я работаю над некоторым кодом в MASM Assembly, используя библиотеки Kip Irvine. У меня есть некоторый код, как это:Почему я получаю странное значение при уменьшении счетчика типа WORD в MASM Assembly?
mov eax, n_var
mov icount, eax
mov ecx,0
.WHILE icount >= ecx
mov esi, icount
fld vector_sol[esi * 8]
dec icount
.ENDW
Проблема заключается в том, что когда icount является 0, то в следующем icount петли должно быть -1, но вместо этого, он получает значение 4294967295. То же самое происходит, если я попытаюсь цикл с регистром вместо icount.
Это нормально, если вы печатаете его как без знака. Используйте подписанный вывод. Однако вы не показывали, как вы печатаете. – Jester
Также не знаю, что использует оператор '> ='. Вы должны воздерживаться от этих вспомогательных вещей (например, '.WHILE'), особенно если вы новичок. Просто код чистый asm. – Jester
Действительно, '-1' кодируется как' FFFFFFFFh', а '4294967295' также кодируется как' FFFFFFFFh'. Разница заключается в их * контексте *. –