Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольная рабта. Часть2. Вариант1

.doc
Скачиваний:
6
Добавлен:
01.04.2014
Размер:
39.94 Кб
Скачать

Контрольная работа №1.Вариант 1.

Задание1: Выполнить вызовы процедуры, которая выводит тексты, символы или числа в соответствии с вариантом. Параметры передаются через регистр. Процедура одна, вызовов несколько.

Задание2: Повторить задание 1 с передачей параметров через память.

Задание3: Повторить задание 1 с передачей параметров через стек.

№/№ вар.

Вывести

Кол. вызовов

Тип процедуры

Кол. параметров

Передача параметров через

1.1

символы

5

ближняя

1

регистр

1.2

числа

1

дальняя

2

память

1.3

строки

1

ближняя

3

стек

Программа1 (задание №1):

.data

symb1 db 'a'

symb2 db 'b'

symb3 db 'c'

symb4 db 'd'

symb5 db 'e'

outp db ''

k db ?

db 10,13,'$'

.stack

dw 128 dup(0)

.code

begin:

mov ax, data

mov ds, ax

;Пять вызовов процедуры. Параметр передается через регистр dl

mov dl, symb1

call output

mov dl, symb2

call output

mov dl, symb3

call output

mov dl, symb4

call output

mov dl, symb5

call output

mov ax, 4ch ; exit to operating system.

int 21h

;Описание процедуры

output proc near

mov k,dl

mov dx, offset outp

mov ah,9

int 21h

ret

output endp

end begin

Программа 2 (задание №2):

.data

num1 db 5

num2 db 8

outp db ''

k db ?

db 10,13

m db ?

db 10,13,'$'

.stack

dw 128 dup(0)

.code

begin:

mov ax, data

mov ds, ax

mov es,ax

;Вызов процедуры. Параметры в памяти (num1, num2).

call far ptr output

mov ax, 4ch

int 21h

;Описание процедуры.Формирует ASCII представление чисел и выводит их ;на консоль

output proc far

mov al,num1

add al, 30h

mov k,al

mov al,num2

add al,30h

mov m,al

mov dx, offset outp

mov ah,9

int 21h

retf

output endp

end begin

Программа 3(задание №3):

.data

;Строки, которые передаются процедуре

string1 db "This is string #1",10,13,"$"

string2 db "String 2",10,13,"$"

string3 db "Third string",10,13,"$"

.stack

dw 128 dup(0)

.code

start:

mov ax, data

mov ds, ax

mov es, ax

;Помещение адресов строк в стек

push offset string1

push offset string2

push offset string3

;Вызов процедуры.Принимает адреса трех строк и выводит строки на ;консоль

call output

mov ax, 4c00h

int 21h

;Описание процедуры.

output proc

mov ah,09h

mov cx,3

mov bp,sp

mov si,2

lbl:

mov dx,[bp+si]

add si,2

int 21h

loop lbl

ret

output endp

end start