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

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

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

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

Звіт до лабораторної роботи № 4 з дисципліни “Засоби системного програмування”. Тема: Програмування задач лінійної структури. Обчислення виразів

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

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

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

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Засоби системного програмування
Група:
КН
Варіант:
27
Коротко про документ

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

У звіті наведено результати виконання лабораторної роботи з програмування арифметичних виразів лінійної структури на мові асемблер. Описано створення exe-програми, використання констант та роботу з операндами різного розміру.

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

  • Системне програмування
  • Арифметичні команди
  • Лінійні програми
  • Робота з пам'яттю
  • Налагодження програм

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

  1. Мета роботи
  2. Завдання
  3. Варіанти завдання
  4. Код програми
  5. Обчислення прикладу
  6. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають системне програмування та мову асемблер.
Викладачі:Олексів М. В.

Ключові поняття

операнддиректива equмодель пам'ятіарифметичні операціїпроміжний результаткод програмирозрядність

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

Міністерство освіти і науки Національний університет «Львівська політехніка» Кафедра ЕОМ Звіт до лабораторної роботи № 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.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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