demetrius2003 » 17 мар 2013, 18:17
Вообще К1810 вроде как аналог 8086, по крайней мере К1810ВМ86. Поэтому данную задачу можно решить применив следующий код:
Код: Выделить всё
cmp ax, bx ;сравниваем А и В
jg grt__ ;переход если ax больше bx
mov ax, 11 ;грузим сюда 11
mul bx ;домножаем на В
mov bx,ax ;грузим в В результат
add bx, 17 ;добавляем 17
mov cx, bx ;грузим конечный результат
jmp out__
grt__: mov cx, ax ;грузим А
mov ax, 5 ;грузим сюда 5
mul cx ;А*5
push ax ;временно запоминаем А*5
mov ax, 3 ;грузим сюда 3
mul bx ;В*3
push ax ;временно запоминаем В*3
pop bx ;выстраиваем правильно делимое и делитель
pop ax ;-//-
div bx ;делим А*7/В*3
add ax, 8 ;прибавляем 8
mov bx, 27 ;грузим сюда 27
push ax ;выстраиваем правильно уменьшаемое и вычитаемое или как там их правильно зовут
push bx ;-//-
pop ax ;-//-
pop bx ;-//-
sub ax, bx ;27-то что насчитали ранее
mov cx, ax ;грузим конечный результат
out__: ret
Тут на входе в ax должно лежать А, в bx должно лежать В, а на выходе в cx лежит результат функции. Всё примитивно просто. Т. к. К1810 у меня нет, то было откомпилировано в 32-битном варианте в TASM - код работает.
Вообще К1810 вроде как аналог 8086, по крайней мере К1810ВМ86. Поэтому данную задачу можно решить применив следующий код:
[code]
cmp ax, bx ;сравниваем А и В
jg grt__ ;переход если ax больше bx
mov ax, 11 ;грузим сюда 11
mul bx ;домножаем на В
mov bx,ax ;грузим в В результат
add bx, 17 ;добавляем 17
mov cx, bx ;грузим конечный результат
jmp out__
grt__: mov cx, ax ;грузим А
mov ax, 5 ;грузим сюда 5
mul cx ;А*5
push ax ;временно запоминаем А*5
mov ax, 3 ;грузим сюда 3
mul bx ;В*3
push ax ;временно запоминаем В*3
pop bx ;выстраиваем правильно делимое и делитель
pop ax ;-//-
div bx ;делим А*7/В*3
add ax, 8 ;прибавляем 8
mov bx, 27 ;грузим сюда 27
push ax ;выстраиваем правильно уменьшаемое и вычитаемое или как там их правильно зовут
push bx ;-//-
pop ax ;-//-
pop bx ;-//-
sub ax, bx ;27-то что насчитали ранее
mov cx, ax ;грузим конечный результат
out__: ret
[/code]
Тут на входе в ax должно лежать А, в bx должно лежать В, а на выходе в cx лежит результат функции. Всё примитивно просто. Т. к. К1810 у меня нет, то было откомпилировано в 32-битном варианте в TASM - код работает.