лабы
.docЛаба 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