Присвоить значение полям записи с помощью AssembleraDelphi , Синтаксис , AssemblerАвтор: Xavier Pacheco unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure Foo(var I: integer); begin { some code } asm mov eax, I inc dword ptr [eax] end; { i has now been incremented by one } { some more code } end; type TDumbRec = record i: integer; c: char; end; procedure ManipulateRec(var DR: TDumbRec); asm mov [eax].TDumbRec.i, 24 mov [eax].TDumbRec.c, 's' end; procedure TForm1.Button1Click(Sender: TObject); var R: TDumbRec; begin ManipulateRec(R); ShowMessage(IntToStr(R.i)); Caption := Caption + R.c; end; end. Программа на Delphi, демонстрирующая использование языка ассемблера в программе на Паскале для манипуляции памятью и переменными. Вот что код делает:
Комментарии к коду:
Альтернативное решение без использования языка ассемблера:
Альтернативное решение достигает того же результата, что и оригинальный код, но использует только встроенные функции Паскаля и является более понятным и поддерживаемым. В статье описывается использование языка программирования Assembler для присвоения значений полям записи, при этом приводится пример кода на Delphi, демонстрирующий изменение значения полей в рекорде и отображение его на форме. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |