Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

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

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

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

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

Рік:
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

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини