Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





6.7. Обработка строк во встроенном ассемблере
Среда программирования Delphi 7 имеет весьма широкие возможности для манипулирования и обработки символов и строк. Delphi поддерживает следующие четыре типа строк:
• тип shortstring или короткая строка;
• ТИП AnsiString ИЛИ Д Л И Н Н Э Я СТрОКЭ;
- тип widestring или большая строка;
• тип PChar или строка с завершающим нулем.

Для объявления коротких и длинных строк можно также использовать зарезервированное слово string. Например, объявление:
var S: String;
определяет строку s, тип которой определяется директивой компилятора $н. Если используется директива компилятора $н-, строка интерпретируется как короткая shortstring. Директива компилятора $н+ интерпретирует строку как AnsiString, причем после зарезервированного слова string не должно быть квадратных скобок. По умолчанию установлено значение $н+, и в наших примерах будем считать, что принята именно эта директива.
Строковые переменные разных типов объявляются следующим образом:
var
ShString: StringflOO];
ShMaxString: Shortstring;
StdString: String;
WdString: WideString;
PcString: PChar;
// короткая строка длиной до 100 символов
// короткая строка длиной до 255 символов;
// длинная строка;
// большая строка;
// указатель на строку с завершающим нулем;
ArrString: array [0..100] of Char; // строка с завершающим нулем
// и длиной до 100 символов

Рассмотрим подробно каждый из этих типов строк, а также возможности обработки строк средствами встроенного ассемблера. Начнем с коротких строк.
Короткие строки представляют собой последовательность ASCII символов, и их размер не должен превышать 255 символов. Первый символ последовательности содержит размер строки. Небольшая программа на встроенном ассемблере показывает, как определить размер короткой строки (листинг 6.30).
Листинг 6.30. Программа, определяющая размер короткой строки
unit sspas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForml
Buttonl
Editl
Edit2
Labell
Label2
class(TForm)
TButton;
TEdit;
TEdit;
TLabel;
TLabel;
procedure ButtonlClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Forml: TForml;
si: ShortString; // si — короткая строка
lsl: Integer;
implementation
{$R *.dfm}
procedure TForml.ButtonlClick(Sender: TObject);
begin
si := Editl.Text;
asm
mov ESI, offset si
mov AL, BYTE PTR [ESI]
mov BYTE PTR lsl, AL
end;
Edit2.Text := IntToStr(lsl);
end;
end.


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru