Указания по выполнению Задания 1.




Программа на Паскале.

Определите прототип вызываемой процедуры. С помощью директивы EXTERNAL отметьте процедуру как внешнюю. Реализацию процедуры расположите в подключаемом объектном модуле chpas.obj. Директивой компиляции {$L} подключите модуль при компоновке программы.

Вызовите процедуру для вывода символа в 1 столбец, 4 строку. Повторите вывод символа 2 раза.

Вызовите процедуру для вывода символа в 9 столбец, 2 строку. Повторите вывод символа 7 раз.

Подпрограмма на языке ассемблера вывода символа в указанную позицию на экране.

Модуль сохраните под именем chpas.asm и оттранслируйте. Полученный объектный модуль поместите в директорию с программой вызова.

Объявите процедуру outchar как внешнюю, т.е. общедоступную с помощью директивы PUBLIC.

Сохраните регистр-модификатор.

Занесите адрес вершины стека в BP.

Для вывода на экран символа используйте функции 10h BIOS - 02h позиционирование курсора (DL - номер столбца, DH - номер строки) и 09h вывод символа заданное число раз (AL - символ, ВН - номер видеостраницы, СХ - число повторов, т.е. количество выводимых символов на экран, BL-атрибуты символа):

- занесите номер строки в DH;

- занесите номер столбца в DL;

- вызовите функцию позиционирования курсора;

- выполните прерывание;

- вызовите функцию вывода символа в текущую позицию курсора;

- занесите символ в AL;

- занесите атрибуты символа в BL;

- определите номер видеостраницы;

- определите количество выводимых символов на экран;

- выполните прерывание;

- восстановите регистр-модификатор;

- осуществите возврат из процедуры с очисткой стека.

 


Программа на Паскале

uses crt;

{$L chpas.obj} - подключение модуля при компоновке программы

procedure outchar(s: char; x, y, c: Integer);external; - прототип внешней вызываемой процедуры

begin

clrscr;

outchar('a',1,4,2); - столбец 1, строка 4, повторить 2 раза

outchar('b',9,2,7); - столбец 9, строка 2, повторить 7 раз

readkey

end.

Подпрограмма на языке ассемблера

MASM

MODEL SMALL

STACK 128

.CODE

outchar PROC near

PUBLIC outchar - объявление процедуры как внешней, общедоступной

PUSH BP - сохранение регистра-модификатора

MOV BP,SP - адрес вершины стека в BP

MOV DH,[BP+6] - номер строки в DH

MOV DL,[BP+8] - номер столбца в DL

MOV AH,02h - функция позиционирования курсора

INT 10h - выполнение прерывания

MOV AH,09h - функция вывода символа в текущую позицию курсора

MOV AL,[BP+10] - символ в AL

MOV BL,07h - атрибуты символа в BL

XOR BH,BH - номер видеостраницы

MOV CX,[BP+4] - количество выводимых символов на экран

INT 10h - выполнить прерывание

POP BP - восстановление регистра-модификатора

RET 8 - возврат из процедуры с очисткой стека

ENDP

END

 

 


Задание 2.

Напишите программу, выводящую на экран "Hello, world, from Delphi!".

Указания по выполнению Задания 2.

На рис. показана форма, используемая в данной программе. Форма содержит надпись и кнопку. В табл. перечислены используемые в данной программе компоненты и свойства, для которых нужно изменить значения, установленные по умолчанию. Разместите надпись и кнопку в форме и установите значения свойств, как указано в табл.

Таблица. Компоненты программы

Компонент Свойство Значение
Форма   Надпись     Кнопка Name Caption Name Caption Font Name Size Style fsBold Name Caption frmProgram Моя программа lblMessage <Пустая строка>   Arial   True btnDisplayMessage &Вывести сообщение

Форма программы

Выполнение программы

Код программы

 

unit Unit13;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TfrmProgram = class(TForm)

lblMessage: TLabel;

btnDisplayMessage: TButton;

procedure DisplayMessage(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

frmProgram: TfrmProgram;

 

implementation

 

{$R *.dfm}

 

procedure TfrmProgram.DisplayMessage(Sender: TObject);

begin

lblMessage.Caption:='Hello, World, from Delphi!';

end;

 

end.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: