Програмування задач лінійної структури. Обчислення виразів

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування та операційні системи
Варіант:
23

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Звіт до лабораторної роботи № 4 з дисципліни: “ Засоби системного програмування” на тему: “ Програмування задач лінійної структури. Обчислення виразів.” Мета: вивчити способи задання констант та змінних в Асемблері та набути навиків використання арифметичних команд над даними різного розміру. Теоритичні відомості: Арифметичні операції в Асемблері Для виконання даної роботи слід розглянути наступні команди арифметики: ADD ADC INC SUB SBB DEC CMP NEG MUL DIV Команди ADD і SUB виконують додавання й віднімання байтів або слів, що містять двійкові дані. Віднімання виконується у комп’ютері по методу додавання із двійковим доповненням: для другого операнда встановлюються зворотні значення бітів і додається 1, а потім відбувається додавання з першим операндом. У всьому, крім першого кроку, операції додавання й віднімання ідентичні. Можливі п’ять ситуацій: ADD / SUB регістр-регістр; ADD / SUB пам'ять-регістр; ADD / SUB регістр-пам'ять; ADD / SUB регістр-безпосереднє значення; ADD / SUB пам’ять-безпосереднє значення. Команда ADC виконує додавання з врахуванням переносу. Тобто якщо прапорець CF має значення 1, то ця команда додає 1 до першого операнду, а вже потім додає другий операнд. Команда SBB виконує віднімання з запозиченням. Тобто якщо прапорець CF має значення 1, то ця команда спочатку віднімає 1 від першого операнду, а вже потім віднімає від нього другий операнд. Завдання: Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу і зберігає результат в пам’яті. Вхідні операнди А, В, С, D, E, F вважати беззнаковими і довжиною в байтах, згідно з індексу; К – константа, довжина якої визначається значенням(згідно варіанту). Для її опису слід використати директиву EQU. За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень). 23 X=A2*B2-C1+D4/E2+K 7AA02023  Текст програми: DOSSEG .MODEL SMALL .STACK 100h .DATA K_Ml EQU 2023h K_St EQU 7AA0h A dw 7012h B dw 1412h C db 12h D dd 38A221B8h E dw 7878h Temp1 dw 00h,00h Temp2 dw 00h,00h Temp3 dw 00h,00h X dw 00h,00h,00h .CODE start: mov ax,@data mov ds,ax mov ax,A mul B mov [Temp1+0], ax mov [Temp1+2], dx mov ax,word ptr[Temp1] mov bh,00 mov bl,C sub ax,bx sbb word ptr[Temp1+2],0 mov word ptr[Temp3+0],ax mov word ptr[Temp3+2],dx mov ax,word ptr[D] mov dx,word ptr[D+2] div E mov dx,K_St add ax, K_Ml mov [Temp2+0],ax adc dx,0 mov [Temp2+2],dx mov ax,word ptr[Temp3+0] mov dx,word ptr[Temp2+0] add ax,dx mov [X],ax adc [X+2],0 mov ax,word ptr[Temp3+2] mov dx,word ptr[Temp2+2] add ax,dx mov [X+2],ax adc [X+4],0 mov ah,4Ch int 21h end start end Обчислення: Temp1= A2*B2-C1= 701216*141216-1216=08C9493216; Temp2= D4/E2= 38A221B816/787816=785916; Temp3= Temp2+K = 785916+7AA0202316=07AA0987C16; X= Temp1+ Temp3=08C9493216+07AA0987C16=8369E1AE16 Проміжні результати: / Рис.1. Змінна temp1, в регістрі dx – старші байти, в аx – молодші / Рис.2. Змінна temp2, старші байти в регістрі dx, а молодші байти в ax / Рис.3. Змінна temp3, старші байти в регістрі dx, а молодші в ax / Рис.4. Змінна Х, результат виразу, старші байти в регістрі ax, a молодші dx Висновок: в даній лабораторній роботі я отримав навики використання різних арифметичних команд над даними різного розміру і використав отримані знання для обчислення індивідуального завдання на мові Assembler.
Антиботан аватар за замовчуванням

09.10.2016 12:10-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!