Студопедия

КАТЕГОРИИ:


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

Not операнд

Test операнд1,операнд2

Xor операнд1,операнд2

Or операнд1,операнд2

And операнд1,операнд2

Логические команды

Loop exter

Pop cx

Loop inter

Inc found

Cmp ax,elem

Inc si

Mov si,0

Code

Mas dw 0, 2, 4, 6, 8, 10, 12, 14,16, 18, 20, 22

Data

Пример программы

18 20 22

12 14 16

6 8 10

0 2 4

Базовая индексная адресация со смещением

Mov si,2

Mov si,0

mov ax,mas[si];записать в регистр ax слово 0

mov ax,mas[si];записать в регистр ax слово 1

 

 

Этот вид адресации используется при работе с двумерными массивами.

Эффективный адрес формируется максимум из трех компонентов:

постоянного (необязательного), указывающего на прямой адрес массива в виде имени идентификатора;

переменного (базового) – имени базового регистра;

переменного (индексного) – имени индексного регистра.

Микропроцессор позволяет масштабировать содержимое индексного регистра (умножать на 2, 4, 8), что обеспечивает вычисление адресов операндов типа w, dw, dd

 

Пример:

mov eax, mas[ebx*4]; mas +(ebx)*4

mov ax, mas[ebx] [ecx*2]; mas +(ebx)+(ecx)*2

sub ax, [ebx+8] [ecx*4]; (ebx)+8+(ecx)*4

Программист должен трактовать некоторую область памяти как двумерный массив. При этом можно выбрать расположение элементов массива в памяти: по строкам или по столбцам.

Если последовательность однотипных элементов трактуется как двумерный массив, расположенный по строкам, то адрес элемента (i,j) вычисляется по формуле:

база + i*m*d + j*d

где m – число столбцов в массиве,

i – номер строки (0…n-1),

j- номер столбца (0…m-1),

d- размер элемента в массиве (1,2,4,6….).

 

Пусть число строк в массиве n=4, и число столбцов m=3.

Вычислить адрес элемента во второй строке и первом столбце (i=2, j=1) массива слов mas.

Эффективный адрес элемента массива:

mas(2,1)=mas+2*3*2+1*2=mas+14

Вычисленный адрес указывает на число 14 (совпадает с адресом)

Программа ищет в массиве число 10

 

found db 0; счетчик успешных попыток

d=2

m=3; число столбцов в массиве

n=4; число строк в массиве

elem=10; элемент для поиска

 

…….

mov bx, 0; начало с нулевой строки

mov si,0; нулевой столбец

mov cx,4;параметр внешнего цикла по строкам

exter:; начало внешнего цикла

push cx; сохраним в стеке счетчик внешнего цикла

mov cx,3; параметр внутреннего цикла по столбцам

inter:; начало внутреннего цикла

mov ax,mas [bx] [si*2]

jne $+6

add bx,m*d

….

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

Команда test выполняет поразрядное логическое умножение, но результат не записывается. Эта команда действует на состояние флагов нуля, паритета, знака.

 

Пример:

or eax, 10b; установка в единицу первого бита в eax

and al, 11111110b; установка в ноль нулевого бита al

xor eax, 10b; инвертирование первого бита в eax

test eax, 10b; переход на метку m1, если первый бит равен единице

<== предыдущая лекция | следующая лекция ==>
Mas dw 0,1,2,3,4,5 | Worker ends
Поделиться с друзьями:


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


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



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




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