КАТЕГОРИИ: Архитектура-(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) |
Mas dw 0,1,2,3,4,5
Data Endm Rept 4 Masw label word Masb label byte Массивы End start Int21h Mov ax,4c00h Loop cycl1 Add bx,10 Pop cx Loop cycl2 Inc si Jne nozero Mov cx,10 Xor si,si Push cx Mov cx,5 Lea bx,mas Xor ax,ax Mov ds,ax Code Db 1,0,9,8,0,7,8,0,2,0 Db 1,0,9,8,0,7,8,0,2,0 Db 1,0,9,8,0,7,8,0,2,0 Db 1,0,9,8,0,7,8,0,2,0 Mas db 1,0,9,8,0,7,8,0,2,0 Data Stack 100h Model small Пример использования вложенных циклов End start Mov ax,4c00h Mov ah,9 Loopne cicl Inc si Mov si,-1 Xor si,si Xor ax,ax Mov cx,len Mov ds,ax Code Mas db 1,0,9,8,0,7,8,0,2,0 Len equ 10 Data Inc si Mov cx, 10 Mov si, 0 Mov bx, offset mas Code …………. nul: mov [bx] [si], 0; обнуление loop nul; управление на метку nul и cx уменьшается на 1 ;выход из цикла, когда CX=0 ……………. Пример использования в цикле команды loopne.
В данном примере программа находит в массиве нулевой байт и выходит из цикла. mes db “Нет нулевых элементов $” start: mov ax,@data cicl: cmp mas[si],0 jz exit;если найден 0, то выход mov dx,offset mes;иначе – нет нулей в строке int 21h exit: int 21h Программа заменяет все нулевые байты в области памяти на значение 0ffh
start: mov ax,@data cycl1: cycl2: cmp byte ptr [bx+si],0 mov byte ptr [bx+si],0ffh nozero:
Массив – структурированный тип данных, состоящий из некоторого числа элементов одного типа. Специальных средств описания массивов в ассемблере не существует, поэтому программист должен знать: o как в программах на ассемблере описать массив, o как инициализировать массив, o как организовать доступ к элементам массива, o как организовать выполнение типовых операций с массивами.
Массив в программе можно смоделировать одним из следующих способов:
1) перечисление элементов массива mas dd 1, 2, 3, 4, 5;массив из 5 двойных слов
2) используя оператор повторения mas dw 10 dup (0);массив из 10 нулевых слов
3) используя директивы label и rept Директива rept относится к макросредствам языка ассемблера и вызывает повторение указанное число раз строк, заключенных между rept и endm. В качестве метки одной области памяти можно использовать разные имена. Каждому имени соответствует указанный тип данных. В примере можно обращаться к массиву байт по метке masb, либо к массиву слов по метке masw.
dw 0f1f0h;массив из 4 повторяющихся слов 0f1f0h . В общем случае для получения адреса элемента в одномерном массиве необходимо базовый адрес массива сложить с произведением индекса этого элемента (начиная с нуля) на размер элемента массива. Адрес = База + (Индекс * Размер элемента массива). Для работы с массивами используются базовые и индексные регистры, позволяющие реализовать несколько режимов адресации данных.
Индексная адресация со смещением. Эффективный адрес формируется из двух компонент: постоянного (базового), указывающего на прямой адрес массива в виде имени идентификатора; переменного (индексного), указывающего на имя индексного регистра.
Пример: ……………..
Дата добавления: 2014-01-04; Просмотров: 333; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |