[Решено] Ассемблерный код из BP7 в FPC

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

[Решено] Ассемблерный код из BP7 в FPC

Сообщение San-ch » 23.11.2011 20:19:13

Есть модуль для работы с мышкой с ассемблерными вставками. В Borland Pascal 7.0 компилируется нормально, а в Free Pascal выдаёт ошибку "Error: Asm: [lds reg16,reg32] invalid combination of opcode" на некоторых строках.

Код: Выделить всё
unit mouse;

interface

  const LeftButton=1; RightButton=2; CenterButton=4;

  function MouseSupportPresence: Boolean;
  procedure ShowMousePointer;
  procedure HideMousePointer;
  function MouseButtonsStatus: Word;
  procedure GetMousePointerPosition(var wX, wY: longint);
  procedure SetMousePointerPosition(wX, wY: Word);

implementation

  {$asmmode intel}
  function MouseSupportPresence: Boolean; assembler;
  asm
    xor ax, ax
    int 33h
    cmp ax,0FFFFh
    mov al,0
    jne @1
    inc ax
    @1:
  end;

  procedure ShowMousePointer; assembler;
  asm
    mov ax,1
    int 33h
  end;

  procedure HideMousePointer; assembler;
  asm
    mov ax,2
    int 33h
  end;

  function MouseButtonsStatus: Word; assembler;
  asm
    mov ax,3
    int 33h
    mov ax,bx
  end;

  procedure GetMousePointerPosition(var wX, wY: Word); assembler;
  asm
    mov ax,3
    int 33h
    push ds
    lds si,wX
    mov [si],cx
    lds si,wY
    mov [si],dx
    pop ds
  end;

  procedure SetMousePointerPosition(wX, wY: Word); assembler;
  asm
    mov ax,4
    mov cx,wX
    mov dx,wY
    int 33h
  end;

end.
San-ch
незнакомец
 
Сообщения: 1
Зарегистрирован: 23.11.2011 19:22:04

Re: FAQ FPC

Сообщение Mr.Smart » 23.11.2011 20:46:48

San-ch забудьте, не будет работать!
Компилятор FPC генерирует:
  • Во первых: код только 32х битный;
  • Во вторых: защищённый режим.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru