У меня возникли проблемы с записью простой программы, которая должна найти наименьшее число в стеке и оставить стек только с этим номером. 0 обозначает конец стека и не должен считаться числом. Кажется, что есть проблема с потоком управления. Я также попытался использовать cmp a, b jle update вместо этого, но с теми же результатами: программа просто продолжается в цикле, не выходя и не обновляя наименьшее число.Сборка x86 поток управления
главный
push 0 ;
push 7 ;
push 2 ;
push 8 ;
push 5 ;
push 4 ;
data a
data b
pop b
loop:
pop a
je a, zero, done
jle a, b, update
jmp loop
update:
add b, a, zero
jmp loop
done:
push b
jmp theend
НАБАТ: конец основной
Какой ассемблер это ??? И какой процессор? Предоставьте соответствующий тег архитектуры. – johnfound
http://www8.cs.umu.se/~ola/Dark/ Я предполагаю, что его x86 – user1803704
В x86-архитектуре таких инструкций нет. Например, все ветви (jl, jle, je, etv.) Имеют только один аргумент - адрес, куда нужно прыгать, если условие истинно. – johnfound