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

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

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

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

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

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

Міністерство освіти і науки Національний університет «Львівська політехніка» Кафедра ЕОМ Звіт до лабораторної роботи № 4 з дисципліни: “ Засоби системного програмування” на тему: “ Програмування задач лінійної структури. Обчислення виразів.” Мета роботи • вивчити способи задання констант та змінних в Асемблері та набути навиків використання арифметичних команд над даними різного розміру. Завдання Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу і зберігає результат в пам’яті. Вхідні операнди А, В, С, D, E, F вважати беззнаковими і довжиною в байтах, згідно з індексу; К – константа, довжина якої визначається значенням(згідно варіанту). Для її опису слід використати директиву EQU. За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень). Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. Дати відповідь на контрольні запитання. Варіанти завдання: А, В, С, D, E, F - беззнакові операнди, довжиною в байтах, згідно з індексу, значення К подано у 16-му форматі. Індивідуальне завдання(Варіант 27): № Вираз K  27 X=A2*B1+C4/(K-E1*F1) A77627   Код програми (файл lab.asm) DOSSEG .MODEL SMALL .STACK 100h .DATA A dw 3333h B db 11h C dd 11112222h E db 22h F db 33h K_low EQU 7627h K_high EQU 7Ah temp1 dw 0 ;5B06 temp2 dw 0 ;35563 temp3 dw 0 ;1110 C71C temp4 dw 0 ;11141C7F X dd 0 ;11143F8F .CODE start: mov ax,@data mov ds,ax ; множення temp1=A*B mov al, byte ptr A mul B mov word ptr temp1,ax mov al, byte ptr [A+1] mul B add word ptr [temp1+1], ax adc byte ptr [temp1+3], 0 ;додавання можливого переносу в старший байт змінної ; для демонстрації в дебагері mov ax, word ptr [temp1+2] mov bx, word ptr temp1 ; множення temp2=E*F mov al, byte ptr E mul F mov word ptr temp2,ax mov al, byte ptr [E+1] mul F add word ptr [temp2+1], ax adc byte ptr [temp2+3], 0 ;додавання можливого переносу в старший байт змінної ; для демонстрації в дебагері mov ax, word ptr [temp2+2] mov bx, word ptr temp2 ; віднімання temp3=K-temp2 mov ax, word ptr K_low sub ax, temp2 mov word ptr temp3, ax mov ax, word ptr K_high sbb ax, 0 ;віднімання з можливим запозиченням mov word ptr [temp3+2], ax ; для демонстрації в дебагері mov ax, word ptr [temp3+2] mov bx, word ptr temp3 ; ділення temp4=C/temp3 mov ax, word ptr C mov dx, word ptr [C+2] div temp3 mov temp4, ax ; додавання X=temp1+temp4 mov ax, word ptr temp1 add ax, temp4 mov word ptr X, ax mov ax, word ptr [temp1+2] adc ax,0 mov word ptr [X+2], ax mov ax, word ptr [temp1+4] adc ax,0 mov word ptr [X+4], ax ; для демонстрації в дебагері mov ax, word ptr [X+4] mov bx, word ptr [X+2] mov cx, word ptr X mov ah,4Ch int 21h end start end Обчислення прикладу: temp1 = B / C = 333316 * 1116 = 3666316 temp2 = E*F = 2216 * 3316 = 6C616 temp3 = K-temp2= 7A762716 - 6C616 = 7A6F6116 temp4 = C / temp3= 1111222216/7A6F6116= 2316 X = temp1+temp4= 3666316 + 248E3E1416 = 4C6116 Проміжні результати: / Рис.1. Змінна temp1, старші байти в регістрі ax, а молодші байти в bx / Рис.2. Змінна temp2, байти в регістрі ax. / Рис.3. Змінна temp3, байти в регістрі ax / Рис.4. Змінна temp4, старші байти в регістрі bx, молодші ax / Рис.5. Змінна Х, результат виразу, байти в регістрі Висновок: в даній лабораторній роботі я отримав навики використання різних арифметичних команд над даними різного розміру і використав отримані знання для обчислення індивідуального завдання на мові Assembler.
Антиботан аватар за замовчуванням

09.10.2016 12:10-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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