Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа готовая.docx
Скачиваний:
211
Добавлен:
22.11.2018
Размер:
81.59 Кб
Скачать

Задание 4 Составить программу (для 16-разрядного процессора), реализующую следующее задание:

Адрес среды окружения программы находится в префиксе программного сегмента(PSP-область, с которой загружается соответствующая программа) со смещением 2Ch. Сегментный адрес PSP находится в регистрах DS и ES при старте программы.

Структура среды окружения:

db строка_1,0

db строка_2,0

……

db строка_т,00,хх

db строка_запуска_программы,0

  1. Необходимо получить из PSP адрес окружения, по этому адресу в среде окружения найти строку, которая описывает путь запуска программы, выдать ее на экран и номер этой строки.

  2. Выдать строку с номером N (по варианту). Если строки с заданным номером не существует, то выдать сообщение «Строка с номером N не найдена».

  3. Выдать все строки содержащие символы (по варианту), в формате:

Строка5: содержимое_строки

Если строки с заданныым символом не существует, то выдать сообщение «Строка, содержащщая символ ! не найдена».

Номер строки

Символ

6,34

#

Задание 5 Составить программу (для 16-разрядного процессора), реализующую следующее задание:

Используя функции BIOS вывода на экран, построив произвольное плоское изображение, выполнить:

Изображение (окрашенная фигура), которое плавно перемещается по экрану стрелками вверх и вниз.

.MODEL small

stack 255

dataseg

stroka db ?

stolb db ?

stroka1 db ?

stolb1 db ?

codeseg

start: mov ah,0 ;Ф-я BIOS режим экрана

mov al,3 ;80*25

int 10h ;Вызов прерывания BIOS

mov stroka1,10

mov stolb1,40

start1:

mov al,stroka1

mov stroka,al

mov al,stolb1

mov stolb,al

mov cx,1

call figura

inc stroka

dec stolb

mov cx,3

call figura

inc stroka

dec stolb

mov cx,5

call figura

inc stroka

dec stolb

mov cx,7

call figura

inc stroka

inc stolb

mov cx,5

call figura

inc stroka

inc stolb

mov cx,3

call figura

inc stroka

inc stolb

mov cx,1

call figura

tt:

mov ah,00h

int 16h

cmp al,1bh

je en1

jmp tt2

en1:

jmp en

tt2:

cmp ah,50h

jne tt1

mov al,stroka

cmp al,24

je start1

call perexod

inc stroka1

jmp start1

tt1:

cmp ah,48h

jne tt3

mov al,stroka

cmp al,6

je qq

call perexod

dec stroka1

qq:

jmp start1

tt3:

jmp tt

figura:

mov ah,2 ;Ф-я BIOS установка позиции курсора

mov bh,0 ;0-страница

mov dh,stroka ;Строка

mov dl,stolb ;Столбец

int 10h ;Вызов прерывания BIOS

mov ax,1003h

mov bl,00h

int 10h

mov ah,09 ;Ф-я DOS вывод символа

mov al,06h ;символ

mov bl,24h

int 10h ;Вызов прерывания DOS

ret

vuvod:

mov ah,2 ;Ф-я BIOS установка позиции курсора

mov bh,0 ;0-страница

mov dh,stroka ;Строка

mov dl,stolb ;Столбец

int 10h ;Вызов прерывания BIOS

mov ax,1003h

mov bl,00h

int 10h

mov ah,09 ;Ф-я DOS вывод символа

mov al,00h ;символ

mov bl,00h

int 10h ;Вызов прерывания DOS

ret

perexod:

mov al,stroka1

mov stroka,al

mov al,stolb1

mov stolb,al

mov cx,1

call vuvod

inc stroka

dec stolb

mov cx,3

call vuvod

inc stroka

dec stolb

mov cx,5

call vuvod

inc stroka

dec stolb

mov cx,7

call vuvod

inc stroka

inc stolb

mov cx,5

call vuvod

inc stroka

inc stolb

mov cx,3

call vuvod

inc stroka

inc stolb

mov cx,1

call vuvod

ret

en:

mov ah,4ch

int 21h

end Start