- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
main:
mov a, P0
dec a
inc a
jnz __div_part
jmp __mul_part
__mul_part:
// mul
mov r0, P1
mov r2, P2
call __Mul
mov P1, r0
mov P2, r1
jmp __end
__div_part:
// div
mov r0, P1
mov r2, P2
call __Div
mov P1, r0
mov P2, r1
jmp __end
__end:
end
inc a
операция подергивания
push eax, a
push ebx, a
xchg eax, ebx
push a, eax
inc a
регистры запачканы
неакуратно дергаешь. смотри не оторви.
__mul_part:
jmp __end
__end:
Это не выхлоп плохого компилятора?
А насчет jmp для задержки... давно это было. Очень архитектурнозависимо.:) Выкинет его проц с предсказанием ветвлений, и время нестабильно. Сейчас видел чтение из порта в качестве задержки между командами ввода-вывода в порт. Хотя... Это же контроллер - там можно, так как команды выполняются строго определенное количество тактов. Но это, похоже, не наш случай. А! Для mcs-51 вообще никакого "передергивания" не надо - там же JZ/JNZ проверяет _значение_ аккумулятора на ноль.:)
Так что это imho просто тяп-ляп сваяная лаба - лишь бы работала.