Билет 1
Задание 1.
Создайте одномодульную программу, работающую с пакетом TASM. Используйте стандартные директивы сегментации и дополните код следующими командами:
В сегменте данных опишите байтовую переменную А, переменную В размером в слово, и переменную Text. Text должна быть описана как байтовая переменная, хотя является строкой. С помощью текст обратитесь непосредственно только к первому символу, а к остальным получите доступ только по смещению.
В кодовом сегменте вначале инициализируйте сегментный регистр DS. Затем в регистр AX поместите значение переменной А. Поскольку регистр АХ 16-ти разрядный, а переменная А байтовая, то напрямую переслать в регистр значение не получится – возникнет ошибка трансляции «типы операндов различны». Поэтому сначала обнулите регистр АН, а затем в регистр ALпередайте значение А. С помощью команды логического сдвига выполните умножение на 1024 и переместите результат в переменную В.
Добавьте в программу вызов функции 09р прерывания 21h для вывода на экран текстовой строки. Признаком конца строки для данной функции является символ «$». Смещение строки должно находиться в регистре DX. Последним действием должен быть вызов функции 4Сh прерывания 21h для корректного завершения программы.
S segment stack
db 128 dup(?)
S ends
|
|
a db 1; байтовая переменная А
b dW?; переменная В размером в слово
text db "This is simple text$"; байтовая переменная Text, строка
; $ - признак конца строки
D ends
C segment
assume cs:c, ds:d, ss:s
|
|

|
mov ah, 0; обнуление регистра АН
|
mov cl,10
shl ax,cl
mov b, ax; результат помещается в переменную В
mov ah,09h; вызов функции 09h для вывода на экран текстовой строки
mov dx, offset text; смещение строки находится в регистре DX
int 21h; прерывание 21h
mov ax,4c00h; вызов функции 4Сh для корректного завершения программы
int 21h; прерывание 21h
С ends
end l
Задание 2.
Создайте программу, иллюстрирующую использование событий OnEnter и OnExit с помощью двух областей просмотра - MemOut1 и MemOut2.
Указание по выполнению Задания 2.
Требуемые значения свойств компонентов формы этой программы и имена используемых подпрограмм обработки событий приведены в табл. Окно выполняемой программы показано на рис.
Таблица. Значения свойств и обработчиков событий компонентов формы, используемой в программе.
Компонент | Свойство | Значение |
Форма Область просмотра Область просмотра | Name Caption Name Lines ReadOnly Name Lines ReadOnly | frmFocusExample Пример событий фокуса memOut1 <Пусто> True memOut2 <Пусто> True |
Имя компонента | Событие | Имя обработчика |
memOut1 memout2 | OnEnter OnExit OnEnter OnExit | GotFocus() LostFocus() GotFocus() LostFocus() |
Код программы
unit FocusEx;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmFocusExample = class(TForm)
memOut1: TMemo;
MemOut2: TMemo;
procedure GotFocus(Sender: TObject);
procedure LostFocus(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmFocusExample: TfrmFocusExample;
implementation
{$R *.dfm}
procedure TfrmFocusExample.GotFocus(Sender: TObject);
begin
TMemo(Sender).Clear;
TMemo(Sender).Lines.Add('Фокус получен');
end;
procedure TfrmFocusExample.LostFocus(Sender: TObject);
begin
TMemo(Sender).Clear; {Приведение типа параметра Sender
к типу области просмотра TMemo}
TMemo(Sender).Lines.Add('Фокус потерян');
end;
end.
Билет 2
Задание 1.
Разработайте, оттранслируйте и отладьте программу с применением упрощённых директив сегментации.
Используйте режим работы IDEAL. Для контроля хода выполнения программы выведите на экран сообщение. Используйте функцию MS-DOS (прерывание 21h) для вывода символьных данных на экран. Под сегмент стека отведите 128 байт. Примените модель памяти SMALL.
IDEAL - режим работы IDEAL
MODEL SMALL - модель памяти SMALL
STACK 128 – под сегмент стека отведено 128 байт
|
MSG DB “Первая программа на ассемблере.$”
ENDS
CODESEG
MAIN:
MOV AX,DGROUP
MOV DS, AX
|

MOV AH,9 - использование функции MS-DOS для вывода символьных данных на экран
INT 21H - прерывание 21h
MOV AX, 4C00H
INT 21H
ENDS
END MAIN
END
Задание 2.
Разработайте программу, демонстрирующую последовательность наступления событий, показанных на рис.
Указание по выполнению Задания 2.
Требуемые значения свойств формы этой программы и имена используемых подпрограмм обработки событий приведены в табл.
Таблица. Свойства и обработчики событий компоненты формы, используемой в программе
Компонент | Свойство | Значение |
Форма | Name Caption | frmEventOrder Последовательность событий |
Имя компонента | Событие | Имя обработчика события |
frmEventOrder | OnActivate OnClose OnCreate OnDestroy OnPaint OnShow | ActivateForm() CloseForm() CreateForm() DestroyForm() PaintForm() ShowForm() |
![]() |



![]() |

Код программы
unitEventOrdefEx;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type
TfrmEventOrder = class(TForm)
procedure ActivateForm(Sender: TObject);
procedure CreateForm(Sender: TObject);
procedure PaintForm(Sender: TObject);
procedure ShowForm(Sender: TObject);
procedure CloseForm(Sender: TObject; var Action: TCloseAction);
procedure DestroyForm(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
frmEventOrder: TfrmEventOrder;
implementation
{$R *.dfm}
procedure TfrmEventOrder.ActivateForm(Sender: TObject);
begin
Application.MessageBox('Обработчик ActivateForm', 'Событие OnActivate',MB_OK);
end;
procedure TfrmEventOrder.CloseForm(Sender: TObject; var Action: TCloseAction);
begin
Application.MessageBox('Обработчик CloseForm', 'Событие OnOnClose',MB_OK);
end;
procedure TfrmEventOrder.CreateForm(Sender: TObject);
begin
Application.MessageBox('Обработчик CreateForm', 'Событие OnCreate',MB_OK);
end;
procedure TfrmEventOrder.DestroyForm(Sender: TObject);
begin
Application.MessageBox('Обработчик DestroyForm', 'Событие OnDestroy',MB_OK);
end;
procedure TfrmEventOrder.PaintForm(Sender: TObject);
begin
Application.MessageBox('Обработчик PaintForm', 'Событие OnPaint',MB_OK);
end;
procedure TfrmEventOrder.ShowForm(Sender: TObject);
begin
Application.MessageBox('Обработчик Showform', 'Событие OnShow',MB_OK);
end;
end.
Билет 3
Задание 1.
Разработайте, оттранслируйте и отладьте программу с применением упрощённых директив сегментации.
Используйте режим работы MASM. Для контроля хода выполнения программы выведите на экран сообщение. Используйте функцию MS-DOS (прерывание 21h) для вывода символьных данных на экран. Под сегмент стека отведите 128 байт. Примените модель памяти SMALL.
MASM - режим работы MASM
MODEL SMALL - модель памяти SMALL
.STACK 128 – под сегмент стека отведено 128 байт
|
MSG DB “Первая программа на ассемблере.$”
![]() |
.CODE
MAIN:
MOV AX, @DATA
MOV DS,AX
MOV AH,9 - использование функции MS-DOS для вывода символьных данных на экран
MOV DX, OFFSET MSG
INT 21H - прерывание 21h
MOV AX, 4C00H
INT 21H
END MAIN
END
Задание 2.
Разработать программу, в которой пользователь с помощью полосы прокрутки задаёт произвольное число от 0 до 100, после чего программа вызывает процедуру AddOne() столько раз, сколько задано этим числом.