Есть две функции из юнита для TMT. Надо переделать, чтоб компильнулось в Turbo Pascal.
А то инструкции 32-разрядного ассемблера не пролезают.
1.
function SafeShr(value:longint; cnt:word):longint;assembler;
asm
mov eax,value
mov bx,ax
shr eax,16
mov dx,ax
mov ax,bx
mov cx,cnt
shrd ax,dx,cl
shr dx,cl
mov bx,ax
mov ax,dx
shl eax,16
mov ax,bx
end;
2.
function SafeShl(value:longint; cnt:word):longint;assembler;
asm
mov eax,value
mov bx,ax
shr eax,16
mov dx,ax
mov ax,bx
mov cx,cnt
shld dx,ax,cl
shl ax,cl
mov bx,ax
mov ax,dx
shl eax,16
mov ax,bx
end;
Вроде всё.
Портирование для TurboPascal, две функции не компилируются в Turbo Pascale |