Вам нужно использовать условные команды jmp. Это не тот же синтаксис, который вы используете; выглядит как MASM, но с использованием GAS вот пример из кода, который я написал для вычисления gcd:
gcd_alg:
subl %ecx, %eax /* a = a - c */
cmpl $0, %eax /* if a == 0 */
je gcd_done /* jump to end */
cmpl %ecx, %eax /* if a < c */
jl gcd_preswap /* swap and start over */
jmp gcd_alg /* keep subtracting */
По сути, я сравниваю два регистра с инструкцией cmpl (сравните long). Если оно меньше, инструкция JL (без перехода) переходит в положение предварительной замены, в противном случае она возвращается к той же метке.
Что касается очистки экрана, это зависит от системы, которую вы используете.