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

лабы

.doc
Скачиваний:
17
Добавлен:
04.06.2015
Размер:
38.91 Кб
Скачать

Лаба 2

Задание:. Вычислить функцию у(x) = ах + в, где а и в - количество элементов массива А(I) лежащих в диапазоне (0,...,15) и (40,...,120) соответственно. Нахождение количества элементов массива, лежащих в заданном диапазоне оформить в виде подпрограммы I=1,2,..,10. 1<= x <= 10, шаг 1.

нет

да

счётчик =0

счётчик - 1

следующая ячейка под результат

следующий аргумент

результат кладём в новый массив

прибавляем переменную b

умножаем его на переменную a

кладём аргумент в ax

результат в переменную b

вызов подпрограммы

результат в переменную a

вызов подпрограммы

обозначим интервал от 0 до 15

в bx адрес массива

начинаем с первого значения массива

счётчик =10

Блок-схема.

всё обнулили

Подпрограмма.

запомнили счётчик

текущий элемент в al

меньше нижней границы интервала

да

нет

больше верхней границы интервала

да

нет

добавляем единицу к количеству значений, удовлетворяющих условиям

следующий элемент

счётчик - 1

счётчик =0

обнуляем di

восстановили счётчик

возврат в программу

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

model small

.stack 100h

.data

len equ 10

y db 10 dup (?)

mas db 1,2,23,25,27,40,123,33,34,35

down db ?

up db ?

a db 0

b db 0

.code

start:

mov ax,@data

mov ds,ax

mov cx,len

mov si,1

lea bx,mas

mov down,0

mov up,15

call podschet

mov a,dl

mov down,40

mov up,120

call podschet

mov b,dl

cicl:

mov ax,si

mul a

add al,b

mov y[di],al

inc si

inc di

loop cicl

exit:

mov ax,4c00h

int 21h

podschet proc

xor di,di

xor al,al

xor dl,dl

push cx

for1:

mov al, [bx][di]

cmp al,down

jb efor

cmp al,up

ja efor

inc dl

efor:

inc di

loop for1

xor di,di

pop cx

ret

podschet endp

end start

Лаба 3

Задание: Задать вывод строки символов и ее перемещение сверху - вниз.

режим 80x25 чб

да

за границей экрана

следующая строка(st+1)

зарисовываем пробелами

позиция курсора в строку st

задержка 10000мс

рисуем 80 символов

позиция курсора в строку st

активный лист

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

.model small

.stack 100h

delay macro time

local ext,iter

push cx

mov cx,time

ext:

push cx

mov cx,10000

iter:

loop iter

pop cx

loop ext

pop cx

endm

.data

st db 0

.code

start: mov ax,@data

mov ds,ax

mov ax,ax

mov ah,0

mov al,2

int 10h

mov ah,05

mov al,00

int 10h

prog:

mov ah,02

mov bh,00

mov dh,st

mov dl,0

int 10h

mov ah,09

mov al,05H

mov bh,00

mov bl,01

mov cx,80

int 10h

delay 10000

prob:

mov ah,02

mov bh,00

mov dh,st

mov dl,0

int 10h

mov ah,09

mov al,32

mov bh,00

mov bl,01

mov cx,80

int 10h

inc st

cmp st, 26

jne prog

exit: mov ax, 4c00h

int 21h

end start