function CalcY(x:char;k:char):char;
begin
asm
{чтение числа в al}
mov al,10
{сохраним в ah}
mov ah,al
{сравним с 23}
cmp al,23
{если >=, то переходим на метку}
jnc @GreatEqual
{x/2, делим на 2 сдвигом вправо}
shr ah,1
{отнимем из 41}
mov al,41
{41-x/2}
sub al,ah
{на выход}
jmp @return
{>=}
@GreatEqual:
{проверим на =}
jz @Equal
{k}
mov al,5
{k+x}
add al,ah
{инверсия k+x}
not al
{на выход}
jmp @return
{=}
@Equal:
{3}
mov al,3
{3*x}
mul ah
{3*x or k}
or al,5
{выход}
@return:
{результат функции}
mov Result,al
end;end;
end.
begin
asm
{чтение числа в al}
mov al,5
{сохраним в ah}
mov ah,al
{сравним с 23}
cmp al,23
{если >=, то переходим на метку}
jnc @GreatEqual
{x/2, делим на 2 сдвигом вправо}
shr ah,1
{отнимем из 41}
mov al,41
{41-x/2}
sub al,ah
{на выход}
jmp @return
{>=}
@GreatEqual:
{проверим на =}
jz @Equal
{k}
mov al,5
{k+x}
add al,ah
{инверсия k+x}
not al
{на выход}
jmp @return
{=}
@Equal:
{3}
mov al,3
{3*x}
mul ah
{3*x or k}
or al,5
{выход}
@return:
{результат функции}
mov cx,ax
end;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.