Создание многосегментных программ - Assembler
Формулировка задачи:
Ребят помогите пожалуйста, думаю уже которую неделю, нужно разработать одно- и многосегментную программы. Суть заключается в следующем:
Написать программу на ассемблере, осуществляющую ввод последовательности символов с клавиатуры, обработку кодов символов в соответствии с заданием и вывод на экран результирующей последовательности
Программа должна включать в себя:
• ввод последовательности символов с клавиатуры (в результате ввода формируется статический массив кодов символов, максимальное число вводимых символов задается студентом самостоятельно);
• обработку кодов символов в соответствии с заданием (вариант задания, B. Перестановка a(n),a(n-1),a(n-2),...,a(n/2),a(1),a(2),...,a(n/2-1).);
• вывод на экран результирующей последовательности
Программа должна быть реализована в 2-х вариантах:
а) односегментная (.com); б) многосегментная (.exe).
вот сама программа, помогите доделать пожалуйста
mov cx, 8 //длина строки mov si,0200 //адрес начального массива mov di,0208 //адрес конечного массива push si //читаем байт из исходного массива add si,cx //добавляем в si длину строки dec si //указатель на конец si shr cx,1 //сдвигаем на 1 push cx //делим по полам cx mov al,[si] //сравниваем si mov [di],al //сравниваем di dec si //указатель на конец начального массива inc di //записываем в конечный массив loop 0110 //переходим на строку 0110 pop cx //достаем cx pop si //достаем si mov al,[si] //сравниваем si mov [di],al //сравниваем di inc si //указатель на начало массива inc di //записываем в конечный массив loop 011A //переходим на строку 011A
Решение задачи: «Создание многосегментных программ»
textual
Листинг программы
model small .code . . .;код start:;точка входа . . .;ещё код .data . . .;данные .stack 256 end start
Объяснение кода листинга программы
- Указывает модель сегментации:
model small
- Начинается код программы:
.code
- Определяется точка входа в программу:
start:
- Определяются сегменты данных и кода:
.data
и.code
соответственно - Указывается размер стека:
.stack 256
- Конец программы:
end start