DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
ООП
Факультет:
КН
Кафедра:
Кафедра обчислювальної техніки

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування
Група:
КН-31
Коротко про документ

Про що ця робота

У роботі досліджено способи задання констант і змінних в асемблері для лінійних структур. Виконано обчислення складного арифметичного виразу з використанням команд множення, ділення та додавання.

У роботі розглядаються

  • Мова асемблера
  • Арифметичні операції
  • Сегмент даних
  • Лінійні програми
  • Обчислення виразів
  • Дільники та множники

Зміст і розділи

  1. Мета роботи
  2. Аналіз заданого виразу
  3. Опис сегмента даних
  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
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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