КАТЕГОРИИ: Архитектура-(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, если первый бит равен единице
Дата добавления: 2014-01-04; Просмотров: 345; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |