Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизPascal срочно, плзззз... Найти похожие ветки
← →
Rooman (2002-04-08 12:59) [50]Торможу и не бибикаю:))) Саму маску нельзя сдвигать:)
Вот так правильно (вроде окончательно):
function rotatemaxN(N:word):word;
asm
and ax,ax
jz @5
mov cx,$8000
mov dx,ax
@1:
mov bx,cx
test ax,cx
jnz @2
shr cx,1
jmp @1
@2:
shr dx,1
jnc @3
or dx,cx
@3:
cmp ax,dx
jae @4
mov ax,dx
@4:
shr bx,1
jnz @2
@5:
end;
и на Паскале:
function rotateN(N:word):word;
var mask,tmp:word;
begin
if N=0 then exit;
mask:=$8000;
while (mask and N)=0 do mask:=mask shr 1;
result:=N;
tmp:=mask;
while tmp>0 do
begin
asm
xor ax,ax
rcr N,1
jnc @1
mov ax,N
or ax,mask
mov N,ax
@1: shr tmp,1
end;
if N>result then result:=N;
end;
end;
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c