Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Використання директив extrn i public
Директиви extrn i public можна використовувати для обміну інформацією між модулями. Варіанти їх використання: 1. обидва модулі використовують сегмент даних викликаючої програми; 2. у кожного модуля є свій власний сегмент даних; 3. модулі використовують атрибут комбінування сегментів private в директиві segment.
Приклад. Два модулі використовують сегмент даних викликаючої програми. В модулі1 у викликаючій програмі визначені дві змінні, в модулі2 викликана програма виводить змінні на екран.
; Модуль1 ; Викликаючий модуль include mac.inc extrn my_proc2: far public per1, per2 stk segment stack db 256 dup (0) stk ends data segment per1 db '1' per2 db '2' data ends code segment main proc far assume cs: code, ds: data, ss: stk call my_proc2 exit main endp code ends end main
; Модуль2 ; Викликаний модуль include mac.inc extrn per1: byte, per2: byte public my_proc2 code segment my_proc2 proc far assume cs: code ; вивід символів на екран mov dl, per1 OutChar mov dl, per2 ret my_proc2 endp code ends end
3.Розробити програму мовою асемблера, яка виконує опис та ініціалізацію даних різних типів, визначення сегментної складової та зміщення адреси змінної. ????????????????????????????????????????????????????????????????? ????
№ 18 1. Охарактеризувати регістрову адресацію. В команді вказується регістр в якому знаходиться операнд: дані чи адреса. Розмірність регістрів і операндів 1, 2, 4 байти для даних і 2, 4 байти для адрес. Команди, що використовують регістрову адресацію, виконуються за мінімальний час, тому що немає звернення до пам’яті
2. Описати додаткові команди для роботи з бітами bt, btr, btc, bts. В останніх моделях процесорів з’явились додаткові команди, які дозволяють програмісту працювати з окремими бітами операндів. Операнд може знаходитися як в пам’яті, так і в регістрі загального призначення.Положення біта задається його зміщенням відносно молодшого біту операнда. Значення зміщення може міститися в команді, або в регістрі загального призначення. Значення даного біту у всіх командах копіюється в ознаку CF. Команди роботи з бітами наступні: · BT операнд, зміщення - переносить значення біта в CF · BTC операнд, зміщення - переносить значення біта в CF, а потім інвертує його значення · BTR операнд, зміщення - переносить значення біта в CF, а потім встановлює його в нуль · BTS операнд, зміщення - переносить значення біта в CF, а потім встановлює його в нуль
3.Скласти програму мовою асемблера обчислення значення функції z = 6bx2+ 2bx – b2/x Зразок у=ax3+bx2+cx+d, якщо x, a, b, c, d - не перевищують [-128, 127]. masm model small p486 .stack 100h .data y dd?; Спочатку розташовуємо більш довгі дані x db -2 a db 1 b db 1 c db 1 d db 1
.code begin: mov ax, @data mov ds, ax
movsx eax, a; Запис з розширенням знакового розряду movsx ebx, x imul ebx; Множення зі знаком a*x-> eax movsx ecx, b add eax, ecx; a*x+b-> eax
imul ebx; (a*x+b)x -> eax movsx ecx, c add eax, ecx; (a*x+b)x+c-> eax
imul ebx; (a*x+b)x+c)x-> eax movsx ecx, d add eax, ecx; ((a*x+b)x+c)x+d-> eax
mov y, eax mov ax, 4c00h int 21h end begin
|