DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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