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

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

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

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

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Програмування частина 4 Технологія системного програмування

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

Мета: вивчити способи задання констант та змінних в Асемблері та набути навиків використання арифметичних команд над даними різного розміру. Заданий вираз: X=A2*B1+C4/(K-E1*F1) К=A77627h Таким чином, в сегменті даних слід відвести місце не лише під вхідні дані та константу, а й під проміжні та остаточні результати, відповідних розмірностей. Зауважимо, що оскільки значення К є трибайтним, а арифметичні дії можуть виконуватися над дво- або чотирибайтними даним, то цю константу варто розбити на дві двобайтні частини – молодшу (7627h), та старшу (00A7h). Це полегшить звертання та оперування зі значенням константи К, хоча такий підхід не є обов’язковим. Такі ж міркування стосуються проміжних результатів та остаточного результату X. Отже, сегмент даних може буде описаний таким чином: .MODEL SMALL .STACK 100h .DATA K_low EQU 7627h K_high EQU 00A7h A dw 2h ;=2 B db 1h ;=1 C dd B71B00h ;=12000000 E db 14h ;=20 F db 3Ch ;=60 Temp1 dw 00h,00h Temp2 dw 0000h Temp3 dw 00h,00h Temp4 dw 00h,00h X dw 00h,00h Опис розділених змінних можна виконувати під різними іменами (наприклад K_low та K_high), або під одним іменем як різні елементи даних (тобто через кому, наприклад Temp1). В останньому випадку, звертання до молодшої частини буде відбуватися по імені, а до старшої - ім’я +зміщення (Temp1 – два молодші байти, Temp1+2 - два старші байти). Всі невідомі значення заповнюємо нуля, щоб уникнути непередбачуваних результатів.. Наступні обчислення виконуємо за допомогою операцій DIV, MUL, ADD, ADC, SUB,SBB згідно з їх форматами та розмірністю даних. Повний текст програми, що виконує дані обчислення приведений нижче. Остаточний результат обчислення виразу буде знаходитися в пам’яті за адресою X. .MODEL SMALL .STACK 100h .DATA K_low EQU 7627h K_high EQU 00A7h A dw 2h ;=2 B db 1h ;=1 C dd B71B00h ;=12000000 E db 14h ;=20 F db 3Ch ;=60 Temp1 dw 00h,00h Temp2 dw 0000h Temp3 dw 00h,00h Temp4 dw 00h,00h X dw 00h,00h .CODE mov ax,@data mov ds,ax mov ax,0 mov al,B mul A mov Temp1,ax;=0002 mov Temp1+2,dx;=0000 mov ax,0 mov al,E mul F mov Temp2,ax ;=04B0 mov dx,K_high mov ax,K_low2 mov bx,Temp2 sub ax,bx sbb dx,0 mov Temp3,ax;=7177 mov Temp3+2,dx;=00A7 mov ax,word ptr[C] mov dx,word ptr[C+2] div Temp3 mov Temp4,ax mov ax,Temp4 add Temp1,ax adc Temp1+2,0 mov X,ax mov X+2,dx mov ah,4Ch int 21h end
Антиботан аватар за замовчуванням

19.12.2013 23:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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