Не ставится прога - Assembler

Узнай цену своей работы

Формулировка задачи:

Посмотрите пожалуста Скачал прогу, хотел поставить. Прога выкинула флаг- требуется отладка с помо визуал студио. Тема кажется точно вышла за рамки плюсов, пожалуста давайте продолжим тут.

Решение задачи: «Не ставится прога»

textual
Листинг программы
function TForm1.CheckSSE2: boolean;
var
  Temp: dword;
begin
   Temp := 1;
   asm
      push ebx
      mov eax,1
      db $0F,$A2
      test edx,$4000000
      jz @NOSSE2
      mov edx,0
      mov Temp,edx
      @NOSSE2:
      pop ebx
   end;
   CheckSSE2 := Temp = 0;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   if CheckSSE2 then
      ShowMessage( 'Поддерживается' )
   else
      ShowMessage( 'Не поддерживается' )
end;

Объяснение кода листинга программы

Код выполняет проверку поддержки инструкций SSE2 процессором.

  1. Переменная Temp инициализируется значением 1.
  2. Затем выполняется блок ассемблерного кода: — Push ebx на стек для сохранения регистра ebx. — Mov eax,1 загрузка значения 1 в регистр eax. — Db $0F,$A2 это инструкция movaps xmm0,xmm1, где xmm0 содержит значение 0x40000000, а xmm1 не используется. — Test edx,$40000000 проверяется, является ли верхний бит регистра edx единицей, что означает, поддерживает ли процессор SSE2. — Jz @NOSSE2 если верхний бит регистра edx равен 0, то есть процессор не поддерживает SSE2, то выполняется следующий код. — Mov edx,0 очищается регистр edx. — Mov Temp,edx значение регистра edx копируется в переменную Temp. — Pop ebx регистр ebx восстанавливается из стека. — @NOSSE2 это метка, которая не выполняется, если процессор поддерживает SSE2.
  3. Переменная CheckSSE2 устанавливается в True, если процессор поддерживает SSE2, иначе она устанавливается в False.
  4. При нажатии кнопки Button1 выполняется следующая проверка: — Если CheckSSE2 равно True, то выводится сообщение Поддерживается. — Если CheckSSE2 равно False, то выводится сообщение Не поддерживается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5