Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Комментарии

ОПЕРАНДЫ-МЕТКИ

Mov ds,ax

Mov al,5

Num equ 5

ОПЕРАНДЫ

ВЫРАЖЕНИЯ

ДИРЕКТИВА END

Должна быть к КАЖДОЙ программе (ассемблерном модуле). Если нет – ОШИБКА. Она ПРИКАЗЫВАЕТ КОМПИЛЯТОРУ:

«Остановить компиляцию на ЭТОЙ СТРОКЕ исходного текста!»

 

 

.MODEL SMALL

.STACK 200h

.DATA

ProgramStart:

mov ah,4ch

int 2

END ProgramStart

 

В программе из ОДНОГО asm-модуля ТОЧКА ВХОДА рядом с END УКАЗЫВАЕТСЯ ОБЯЗАТЕЛЬНО.

В программах из НЕСКОЛЬКИХ asm-модулей точка входа указывается рядом с END ТОЛЬКО ТОГО МОДУЛЯ, В КОТОРОМ ОНА СОДЕРЖИТСЯ.

 

Выражения можно использовать везде, где допускается использование констант. Выражения вычисляет компилятор TASM.EXE, поэтому при их вычислении должно получаться значение-константа.

Пример:

...

MemVar DB 0

NextVar DB?

...

...

mov ax,SEG MemVar

mov ds,ax

mov bx,OFFSET MemVar + (3*2) - 5

mov BYTE PTR [bx],1

...

 

«ОПЕРАНД» - то, НАД ЧЕМ выполняется ОПЕРАТОР. Это “МАТЕРИАЛ”, с которым работает оператор языка ассемблера (и соответствующая ему МАШИННАЯ КОМАНДА).

 

НЕПОСРЕДСТВЕННЫЕ операнды - строка, имя или выражение с фиксированным значением:

imd = num - 2

mov al,num; эквивалентно mov al, 5

; 5 здесь непосредственный операнд

add [si],imd

; imd = 3 - непосредственный операнд

;5 - непосредственный операнд

 

АДРЕСНЫЕ операнды- задают физическое расположение операнда в памяти с помощью двух составляющих адреса: сегмента и смещения:

mov ax,0000h

mov ax,ds:0000h;записать слово в ax из области памяти; по физическому адресу 0000:0000

 

ПЕРЕМЕЩАЕМЫЕ - означают некоторый адрес в памяти. Сегментная часть адреса НЕИЗВЕСТНА до загрузки программы в память перед испролнением. Вот пример:

data segment

mas_w dw 25 dup (0)

code segment

PROG10: mov ax, bx

lea si,mas_w; mas_w - перемещаемый операнд

je PROG10; PROG10 - перемещаемый операнд

 

Позже мы рассмотрим операнды БАЗОВЫЕ и ИНДЕКСНЫЕ; СТРУКТУРНЫЕ; Описания ЗАПИСЕЙ

 

РЕГИСТРОВЫЕ ОПЕРАНДЫ – это просто имена регистров.

Допускается использование имен всех регистров, приведенных на схеме программной модели процессора.

Пример:

mov al,4; константу 4 заносим в регистр al

mov dl,pass+4; байт по адресу pass+4 в регистр dl

add al,dl; команда с регистровыми операндами

 

ПРИМЕР Пояснение
MemWord DW 1 ... mov al, SIZE MemWord   Метка ячейки данных, размер которого в байтах (здесь 2), пересылается в al.  
cmp ax,100 ja IsAbove100 ... IsAbove100:   Метка смещения в сегменте кода, НА КОТОРОЕ произойдет переход, если 100 выше (беззнаковое сравнение!) значения ax.  
TempVar DW? ... mov [TempVar], ax sub ax, [TempVar]   Метки, используемые как ИМЕНА ПЕРЕМЕННЫХ.  
TempVar DW? ... mov TempVar, ax sub ax, TempVar   Интересно то, что квадратные скобки здесь НЕОБЯЗАТЕЛЬНЫ!  

mov ah,1; функция DOS ввода с клавиатуры int 21h; вызвать DOS, чтобы получить ; следующую нажатую клавишу   Излишне многословные комментарии  

 

mov ah,1 int 21h; получить следующий символ   Лаконично, а суть не теряется!  

 

; ; Сгенерировать для буфера передачи байт контрольной суммы ; mov bx,OFFSET TransferBuffer mov cx,TRANSFER_BUFFER_LENGTH sub al,al; очистить аккумулятор контрольной суммы CheckSum: add al,[bx]; добавить в него текущее значение байта inc bx; указать на следующий байт ...   Хороший стиль: Блоковый комментарий  
<== предыдущая лекция | следующая лекция ==>
Мнемоники инструкций и директивы | Сдвига ( shl и shr)
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 255; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.