Федеральное агенство по науке и образованию
Красноярский Государственный Технический Университет
Лабораторная работа по ЦУиМП №2
Изучение подпрограмм языка ассемблера
Вариант 1
Выполнил: студент гр.Р52-4
Дианов А.В.
Проверил:
Сушкин И.Н.
Красноярск 2005
1. Блок-схема программы.
2. Алгоритм работы программы.
В ходе работы программы поэлементно считываются 2-х байтовые числа из 1-го массива, проверяются в подпрограмме по маске, и, в случае совпадения числа с маской, производится его запись во 2-й массив.
3. Листинг программы.
code_ segment para 'code' ; Начало сегмента кода выровненного на границу параграфа
assume cs:code_,ds:data_ ; Связывание имен сегментов с сегментными регистрами
.286
main:
mov ax,data_ ; Инициализация сегментного
mov ds,ax ; регистра ds
lea si,array1 ; Загрузка в регистр si адреса 1-го (исходного) массива
lea di,array2 ; Загрузка в регистр di адреса 2-го (пустого) массива
mov cx,10 ; Запись в регистр-счетчик количества повторений=10
next_el:
mov ax,ds:[si] ; Считываем в регистр ax очередное число из 1-го массива
call cmp_ ; Вызываем подпрограмму обработки числа по маске
add si,2 ; Увеличиваем на 1 индекс проверяемого элемента 1-го массива
loop next_el ; Если не дошли до конца 1-го массива, перейти на метку next_el
mov ax,4c00h ; иначе,стандартное
int 21h ; завершение программы
cmp_ proc ; Заголовок подпрограммы обработки числа по маске
mov dx,ax ; Сохраняем копию содержимого регистра ax в регистр dx
and ax,1024h ; Выполняем операцию И над регистром ax и маской 1024h
cmp ax,1024h ; Если 2,5,12 разряды ax не равны 1,
jne exit_p ; переходим на метку exit_p
mov ds:[di],dx ; иначе, сохраняем копию числа во 2-м массиве
add di,2 ; и увеличиваем на 1 индекс записываемого элемента 2-го массива
exit_p:
ret ; Стандартный выход из подпрограммы
cmp_ endp ; Конец описания подпрограммы
code_ ends ; Конец сегмента кода
data_ segment para use16 'data' ; Сегмент данных, выровненный на границу параграфа
array1 dw 4,0ffffh,32,3566,4096,6,1024h,7,0f0f4h,10 ; 1-й массив
array2 dw 10 dup (0) ; 2-й массив
data_ ends ; Конец сегмента данных
end main
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.