- •Include macro.Lib ;Подключение библиотеки
- •Скриншот Программы №1
- •Скриншот Программы №2
- •Скриншот Программы №3
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Include macro.Lib ;Подключение библиотеки
- •Скриншот программы
Include macro.Lib ;Подключение библиотеки
Stec segment 'stack' ;Начало сегмента стека
dw 256 dup(?) ;Выделение в памяти 256 двойных байт
stec ends ;Конец сегмента стека
data segment 'data' ;Начало сегмента данных
const1 db 2 ;Объявление переменной
k dw 0 ;Объявление переменной
pr db 0 ;Объявление переменной
mas db 10 dup(?) ;Объявление переменной
mas1 db 'vvedite massiv $' ;Сообщение
ndw ? ;Объявление переменной
n1 db 'vvediterazmermassiva $' ;Сообщение
o1 db 'otvet $' ;Сообщение
data ends ;Конец сегмента данных
code segment 'code' ;Начало сегмента код
begin proc far ;Начало программы
Assume s:stec,ds:data,cs:code ;Задает адрес каждого сегмента
Mov ax,data ;Команда начальной инициализации
Mov ds,ax ;Команда начальной инициализации
cls ;Очистка экран
move_cursor 0,0 ;Курсор на (0,0)
messagen1 ;Вывод сообщения
key_$2BIN ;Ввод переменной
movn,ax ;Пересылка в ячейку
crlf ;Переход на след. строку
movcx,n ;Пересылка в ячейку
leadi,mas ;смещения
messagemas1 ;Вывод сообщения
m: ;Метка m
key_$2bin ;Ввод переменной
mov [di],al ;Пересылка в ячейку
crlf ;Переход на след. строку
inck ;Увеличивает на 1
movax,k ;Пересылка в ячейку
idivconst1 ;Деление рабочей ячейки
cmpah,0 ;Сравнение рабочей ячейки
jem1 ;Если равно, то на метку m1
movbl,[di] ;Пересылка в ячейку
addpr,bl ;Прибавление к рабочей ячейке
m1: ;Метка m1
incdi ;Увеличивает на 1
loopm2 ;организация цикла со счетчиком в
;регистре cx
jmpm3 ;Переход на метку
m2: ;Метка m2
jmp m ;Переход на метку
m3: ;Метка m3
messageo1 ;Вывод сообщения
moval,pr ;Пересылка в ячейку
CBW ;Расширить до 2 байт
print_number ;Вывод значения
crlf ;Переход на след. строку
movax,4c00h ;Задание прерывание на выход из DOS
int 21h ;Прерывание
ret ;Возврат
beginendp ;Конец программы
codeends ;Конец сегмента кода
endbegin ;Конец
Скриншот программы
Задача №2
В одномерном массиве найти сумму элементов массива, расположенных между первым и последним отрицательными элементами.
Листинг Программы
Include macro.Lib ;Подключение библиотеки
stec segment 'stack' ;Начало сегмента стека
dw 256 dup(?) ;Выделение в памяти 256 двойных байт
stec ends ;Конец сегмента стека
data segment 'data' ;Начало сегмента данных
const1 db 2 ;Объявление переменной
kdw 0 ;Объявление переменной
k1 dw 0 ;Объявление переменной
k2 dw 0 ;Объявление переменной
masdb 10 dup(?) ;Объявление переменной
mas1 db 'vveditemassiv $' ;Сообщение
ndw ? ;Объявление переменной
n1 db 'vvediterazmermassiva $' ;Сообщение
o1 db 'otvet $' ;Сообщение
sum db 0 ;Объявление переменной
data ends ;Конец сегмента данных
code segment 'code' ;Начало сегмента код
begin procfar ;Начало программы
Assumess:stec,ds:data,cs:code ;Задает адрес каждого сегмента
Mov ax,data ;Команда начальной инициализации
mov ds,ax ;Команда начальной инициализации
cls ;Очистка экран
move_cursor 0,0 ;Курсор на (0,0)
message n1 ;Вывод сообщения
key_$2BIN ;Ввод переменной
mov n,ax ;Пересылка в ячейку
crlf ;Переход на след. строку
mov cx,n ;Пересылка в ячейку
lea di,mas ; смещения
message mas1 ;Вывод сообщения
m: ;Метка m
key_$2bin ;Ввод переменной
mov [di],al ;Пересылка в ячейку
crlf ;Переход на след. Строку
inc di ;Увеличивает на 1
loop m2 ;организация цикла со счетчиком в
;регистре cx
Jmp m3 ;Переход на метку
m2: ;Метка m2
jmp m ;Переход на метку
m3: ;Метка m2
lea di,mas ;смещения
mov cx,n ;Пересылка в ячейку
m4: ;Метка m4
mov al,[di] ;Пересылка в ячейку
cmp al,0 ;Сравнение рабочей ячейки
JLkon ;Если меньше, то на метку kon
Inc di ;Увеличивает на 1
loop m4 ;организация цикла со счетчиком в
;регистре cx
kon: ;Метка kon
mov k1,di ;Пересылка в ячейку
lea di,mas ;смещения
mov cx,n ;Пересылка в ячейку
m5: ;Метка m5
mov al,[di] ;Пересылка в ячейку
cmp al,0 ;Сравнение рабочей ячейки
JG m6 ;Если больше, то на метку m6
Mov k2,di ;Пересылка в ячейку
m6: ;Метка m6
inc di ;Увеличивает на 1
loop m5 ;организация цикла со счетчиком в
;регистре cx
Mov di,k1 ;Пересылка в ячейку
mov si,k2 ;Пересылка в ячейку
cmp di,si ;Сравнение рабочей ячейки
je kon1 ;Если равно, то на метку kon1
inc di ;Увеличивает на 1
m7: ;Метка m7
cmp di,si ;Сравнение рабочей ячейки
JE kon1 ;Если равно, то на метку kon1
Mov al,[di] ;Пересылка в ячейку
add sum,al ;Прибавление к рабочей ячейке
inc di ;Увеличивает на 1
loop m7 ;организация цикла со счетчиком в
;регистре cx
kon1: ;Метка kon1
messag eo1 ;Вывод сообщения
moval,sum ;Пересылка в ячейку
CBW ;Расширить до 2 байт
Print_number ;Вывод значения
crlf ;Переход на след. Строку
key_$2BIN ;Ввод переменной
mov ax,4c00h ;Задание прерывание на выход из DOS
int 21h ;Прерывание
ret ;Возврат
begin endp ;Конец программы
code ends ;Конец сегмента кода
end begin ;Конец
Скриншот программы
Отчёт №5
Двухмерные массивы
Теория
Задача №1
Найти максимальный элемент в каждом столбце.
Текстпрограммы
