Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Використання директив 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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.