Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие Ассемблер.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
9 Мб
Скачать
☆

Скриншот Программы №1

Скриншот Программы №2

Скриншот Программы №3

Отчёт №3

Циклы

Теория

Задача №1

Условие

С клавиатуры вводится последовательность из Nцелых чисел. Определить количество одинаковых соседних элементов.

Листинг Программы

includemacro.lib ;Подключение библиотеки

stecsegment 'stack' ;Начало сегмента стека

dw 256 dup(?) ;Выделение в памяти 256 двойных байт

stecends ;Конец сегмента стека

datasegment 'data' ;Начало сегмента данных

xdb ? ;Объявление переменной

x1 db 'Vvediteelementi $' ;Сообщение

ndw ? ;Объявление переменной

n1 db 'Vvediten=$';Сообщение

ydb ? ;Объявление переменной

kdb 0 ;Объявление переменной

o1 db 'Posledovatelras =$' ;Сообщение

kon1 db ? ;Объявление переменной

dataends ;Конец сегмента данных

codesegment 'code' ;Начало сегмента код

beginprocfar ;Начало программы

Assumess:stec,ds:data,cs:code ;Задает адрес каждого сегмента

movax,data ;Команда начальной инициализации

movds,ax ;Команда начальной инициализации

cls ;Очистка экран

move_cursor 0,0 ;Курсор на (0,0)

messagen1 ;Вывод сообщения

key_$2BIN ;Ввод переменной

movn,ax ;Пересылка в ячейку

subax,1 ;Вычитание ячейки

movn,ax ;Пересылка в ячейку

crlf ;Переход на след. строку

movcx,n ;Пересылка в ячейку

messagex1 ;Вывод сообщения

key_$2BIN ;Ввод переменной

movy,al ;Пересылка в ячейку

crlf ;Переход на след. строку

m: ;Метка m

messagex1 ;Вывод сообщения

key_$2BIN ;Ввод переменной

movx,al ;Пересылка в ячейку

crlf ;Переход на след. строку

cmpal,y ;Сравнение рабочей ячейки

jlm1 ;Если меньше, то на метку m1

JGm1 ;Если больше, то на метку m1

inck ;Увеличивает на 1

m1: ;Метка m1

moval,x ;Пересылка в ячейку

movy,al ;Пересылка в ячейку

loopm4 ;организация цикла со счетчиком в регистре cx

JMPm5 ;Переход на метку

m4: ;Метка m4

JMP m ;Переход на метку

m5: ;Метка m5

messageo1 ;Вывод сообщения

moval,k ;Пересылка в ячейку

CBW ;Расширить до 2 байт

cmpax,n ;Сравнение рабочей ячейки

print_number ;Вывод значения

crlf ;Переход на след. строку

movax,4c00h ;Задание прерывание на выход из DOS

int 21h ;Прерывание

ret ;Возврат

beginendp ;Конец программы

codeends ;Конец сегмента кода

endbegin ;Конец

Скриншот программы

Задача №2

Условие

С клавиатуры вводится последовательность из Nцелых чисел, 0-конец последовательности. Определить max элементпоследовательности.

Листинг Программы

includemacro.lib ;Подключение библиотеки

stecsegment 'stack' ;Начало сегмента стека

dw 256 dup(?) ;Выделение в памяти 256 двойных байт

stecends ;Конец сегмента стека

datasegment 'data' ;Начало сегмента данных

xdb ? ;Объявление переменной

x1 db 'Vvediteelementi $' ;Сообщение

maxdw -32767 ;Объявление переменной

o1 db 'max=$' ;Сообщение

dataends ;Конец сегмента данных

codesegment 'code' ;Начало сегмента код

beginprocfar ;Начало программы

Assumess:stec,ds:data,cs:code ;Задает адрес каждого сегмента

movax,data ;Команда начальной инициализации

movds,ax ;Команда начальной инициализации

cls ;Очистка экран

move_cursor 0,0 ;Курсор на (0,0)

m: ;Метка m

messagex1 ;Вывод сообщения

key_$2BIN ;Ввод переменной

movx,ax ;Пересылка в ячейку

crlf ;Переход на след. строку

cmpax,0 ;Сравнение рабочей ячейки

JEcon1 ;Если равно, то на метку con1

crlf ;Переход на след. строку

cmpax,max ;Сравнение рабочей ячейки

JLm1 ;Если меньше, то на метку m1

movmax,ax ;Пересылка в ячейку

m1: ;Метка m1

jmpm ;Переход на метку

con1: ;Меткаcon1

messageo1 ;Выводсообщения

movax,max ;Пересылкавячейку

print_number ;Выводзначения

crlf ;Переходнаслед. Строку

movax,4c00h ;Задание прерывание на выход из DOS

int 21h ;Прерывание

ret ;Возврат

beginendp ;Конец программы

codeends ;Конец сегмента кода

endbegin ;Конец

Скриншот программы

Отчёт №4

Одномерные массивы

Теория

Задача №1

В одномерном массиве найти сумму элементов массива с нечетными номерами.

Листинг Программы