Нужно написать программу, в которую задаются параметры a,b,i. И по соотношениям a с b вычислить значения i1 и i2 . Есть 2 системы и на них накладываются одинаковые условия
Код:
TITLE LAB5
data segment
a DB 1
b DB 3
i DB 2
i1 DB 0
i2 DB 0
auth DB 'IVAN','$'
mess DB 'NAZMITE KNOPKU DLY VIHODA $'
data ends
code segment
assume cs:code, ds:data
begin:
cmp a,b
jnge M2; если меньше или равно
jg M1; если больше
M1:
mov al,i
imul al,4; запись в младший регистр, умножение 4*i
add al,5
mov i1,al; конечный результат первой функции
mov al,i
imul al,3
sub al,4
mov i2,al; запись значения i2=3*i-4
jmp exit
M2:
mov al,i
imul al,4
sub al,10
mov i1,al; запись значения i1=4*i-10
mov al,i
add al,1
imul al,3; результат i2=3(i+1)
mov i2,al
jmp exit
exit:
mov ax,4c00h
int 21h
code ends
END begin
с осальными ошибками поборолся, но вот выдаёт сейчас 5 ошибок,
illegal memory reference
imul al,4; запись в младший регистр, умножение 4*i
и остальные ошибки
Extra characters on line
imul al,3
imul al,4
imul al,3; результат i2=3(i+1)
И все ошибки связаны с командой перемножения, что заставляет задуматься о том, что я, похоже не верно понял как ей пользоваться, но в турбодебагере пробивал, более адекватно работала эта команда если писал вместо al, ax, но как я понимаю это одно и тоже почти., если наблюдать за отладкой. Пробовал лишнюю строку с перессылкой данного в регистр al не делать, и использовать imul как написано на многих сайтах, как
Код:
mov bx,186
imul eax,bx,8
но ругается на то, что он не знает такого аргумента как eax... Если что, я работаю с турбодебаггером и компилирую пошагово текстовый файл