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

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

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

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

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

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

Міністерство освіти і науки Національний університет «Львівська політехніка» Кафедра ЕОМ Звіт до лабораторної роботи № 4 з дисципліни: “ Засоби системного програмування” на тему: “ Програмування задач лінійної структури. Обчислення виразів.” Мета роботи • вивчити способи задання констант та змінних в Асемблері та набути навиків використання арифметичних команд над даними різного розміру. Завдання Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу і зберігає результат в пам’яті. Вхідні операнди А, В, С, D, E, F вважати беззнаковими і довжиною в байтах, згідно з індексу; К – константа, довжина якої визначається значенням(згідно варіанту). Для її опису слід використати директиву EQU. За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень). Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. Дати відповідь на контрольні запитання. Варіанти завдання: А, В, С, D, E, F - беззнакові операнди, довжиною в байтах, згідно з індексу, значення К подано у 16-му форматі. Індивідуальне завдання(Варіант 10): № Вираз K  10 X=A4-B4/C2+K+E2*F1 2310   Код програми (файл lab.asm) DOSSEG .MODEL SMALL .STACK 100h .DATA A dd 11112222h B dd 12345678h C dw 3333h E dw 3233h F db 11h K EQU 2310h temp1 dw 0 ;5B06 temp2 dd 0 ;35563 temp3 dd 0 ;1110 C71C temp4 dq 0 ;11141C7F X dq 0 ;11143F8F .CODE start: mov ax,@data mov ds,ax ; ділення temp1=B/C mov ax, word ptr B mov dx, word ptr [B+2] div C mov temp1, ax ; множення 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=A-temp1 mov ax, word ptr A sub ax, temp1 mov word ptr temp3, ax mov ax, word ptr [A+2] sbb ax, 0 ;віднімання з можливим запозиченням mov word ptr [temp3+2], ax ; для демонстрації в дебагері mov ax, word ptr [temp3+2] mov bx, word ptr temp3 ; додавання temp4=temp3+temp2 mov ax, word ptr temp3 add ax, word ptr temp2 mov word ptr temp4, ax mov ax, word ptr [temp3+2] adc ax, word ptr [temp2+2] mov word ptr [temp4+2], ax adc word ptr [temp4+4], 0 ; для демонстрації в дебагері mov ax, word ptr [temp4+4] mov bx, word ptr [temp4+2] mov cx, word ptr temp4 ; додавання X=temp4+K mov ax, word ptr temp4 add ax, K mov word ptr X, ax mov ax, word ptr [temp4+2] adc ax,0 mov word ptr [X+2], ax mov ax, word ptr [temp4+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 = 1234567816 / 333316 = 5B0616 temp2 = E*F = 323316 * 1116 = 3556316 temp3 = A-B/C= A-temp1= 1111222216 - 5B0616 = 1110C71C16 temp4 = A-B/C+ E2*F1 = temp3-temp2=1110C71C16+3556316= 11141C7F16 X = temp4 + K = 11141C7F 16 + 231016 = 11143F8F16 Проміжні результати: / Рис.1. Змінна temp1, в регістрі ax - частка, в dx – залишок від ділення / Рис.2. Змінна temp2, старші байти в регістрі ax, а молодші байти в bx / Рис.3. Змінна temp3, старші байти в регістрі ax, а молодші в bx / Рис.4. Змінна temp4, старші байти в регістрі bx, молодші ax / Рис.5. Змінна Х, результат виразу, старші байти в регістрі bx, наймолодші сx Висновок: в даній лабораторній роботі я отримав навики використання різних арифметичних команд над даними різного розміру і використав отримані знання для обчислення індивідуального завдання на мові Assembler.
Антиботан аватар за замовчуванням

09.10.2016 12:10-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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