![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Здравствуйте!У меня есть код задачи рабочий:
Код:
procedure TForm1.Button1Click(Sender: TObject); var n1,n2:int64; begin n1 := StrToInt64(Edit1.Text); n2 := n1 xor $0000FF00; Edit2.Text := IntToStr(n2); end; и учитель сказал сделать ассемблерную вставку чтобы и на ASMe работал!Но вот я не знаю как)Вставка должна быть буквально 5 строчек)Посмотрите кому не лень) |
#2
|
|||
|
|||
![]() Ну, надо проверять, но что-то типа:
Код:
procedure TForm1.Button1Click(Sender: TObject); var n1,n2:int64; begin n1 := StrToInt64(Edit1.Text); asm push eax; push ebx mov eax, n1 mov ebx, $0000FF00 xor eax,ebx mov n2, eax; pop ebx; pop eax; end; Edit2.Text := IntToStr(n2); end; PS. Еще раз без тегов напишешь - получишь бан на неделю. |
#3
|
||||
|
||||
![]() Ой прости я забыла про теги!А код твой не работает)Ошибка в строке mov eax, n1 перед n1 !пишет Operand size mismatch)
|
#4
|
|||
|
|||
![]() Странно, по размеру как раз совпадает - DWORD.
А на другие строки не ругается? |
#5
|
||||
|
||||
![]() Ну до Этой строки все чисто))а потом не знаю)
|
#6
|
|||
|
|||
![]() Короче, да, я не прав. eax это 32 бита, а надо 64. Ты точно 32 битами не обойдешься?
В общем, придется делать по частям, что бы нормально работало на процах без поддержки 64бит. сейчас подумаю что можно сделать, но это уже не 2 строчки. Там дофига будет. |