Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Сдвига ( shl и shr)

ОПЕРАЦИИ

СЧЕТЧИК АДРЕСА (РАЗМЕЩЕНИЯ)

Пример грамотно откомментированного кода

;

; Функция, возвращающая контрольную сумму (размером в

; байт) буфера данных

;

; Входные данные:

; DS:BX - указатель на начало буфера

; CX - длина буфера

;

; Выходные данные:

; AL - контрольная сумма буфера

;

; Используемые регистры (содержимое не сохраняется):

; BX, CX

;

; Примечание: буфер не должен превышать 64К и не должен

; пересекать границу сегментов.

;

CheckSum PROC NEAR

sub al,al; очистить аккумулятор

; контрольной суммы

add al,[bx]; прибавить текущее

; значение байта

inc bx; ссылка на следующее

; значение

loop CheckSum

ret

CheckSum ENDP

 

 

Его имя - $. Его значение – это смещение текущей машинной команды относительно начала сегмента кода.
Фрагмент файла листинга:

000C EB 01 jmp $ + 3; безусловный переход на XOR; $ = 0Ch

; длина команды jmp = 2 байта

000E FC CLD; длина команды cld = 1 байт

000F 33 C0 xor ax,ax

 

 

НЕ ПУТАЙТЕ ИХ С МАШИННЫМИ КОМАНДАМИ! Машинные команды исполняет ПРОЦЕССОР на фазе ВЫПОЛНЕНИЯ программы.

ОПЕРАЦИИ выполняет компилятор TASM.EXE на фазе компиляции. Результат выполнения помещается в объектный код.

Сначала рассмотрим операции АРИФМЕТИЧЕСКИЕ:

• унарные “ + ” и “ ”;

• бинарные “ + ” и “ ”;

• умножения “ * ”;

• целочисленного деления “ / ”;

• получения остатка от деления “ mod ”.

Пример:

tab_size equ 50;размер массива в байтах
size_el equ 2;размер элементов

;вычисляется число элементов массива
; и заносится в регистр cx
mov cx, tab_size / size_el;операция целочисл. деления “/”

 

Пример:

mask_b equ 10111011b

mov al, mask_b shr 3;al = 00010111b

СРАВНЕНИЯ (ЛОЖЬ = лог. 0 = 0 (все биты 0), ИСТИНА = лог.1 = 0FFh (все биты 1))

 

 

Пример:

tab_size equ 30; размер таблицы

mov al, tab_size GE 50;загрузка в al проверки размера
; таблицы (1 - tab_size >=50, 0 - tab_size < 50)
cmp al,0;если tab_size < 50, то
je m1;переход на m1

m1:

 

<== предыдущая лекция | следующая лекция ==>
Комментарии | Прямая (непосредственная) адресация
Поделиться с друзьями:


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


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



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




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