Контрольная рабта. Часть2. Вариант1
.docКонтрольная работа №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