Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


A. Массивы. Идентификация массивов. Поиск и сортировка




Массив – это упорядоченный набор однотипных элементов.

Для задания массивов целых чисел удобнее всего использовать оператор дублирования dup.

В Ассемблере нет возможности объявления двух- и более мерных массивов. Для организации таких структур данных программисту необходимо самому предусматривать их обработку, то есть определять, как будут храниться элементы массива.

;-------------------------------------------------------------------------------------------------------------------------------------------

 

; поиска максимального элемента в третей строке массива 2×10

; двухбайтных элементов

 

data segment

; задание и инициализация массива arr

arr dw 438,4,76,87,34,67,234,90,48,0

dw 34,-15,2451,6125,864,92,238,4769,1237,6281

dw 10,59,251,125,64,2,8,49,37,81

data ends

 

stack1 segment stack

db 100h dup(?)

stack1 ends

 

code segment

assume cs:code,ds:data,ss:stack1

begin:

mov ax,data

mov ds,ax; занесение в ds адреса начала сегмента данных data

; позиционирование в массиве на первый элемент ретей строки

mov ax,2; нумерация начинается с 0

mov cl,10*type arr; десять двухбайтных элементов

mul cl; в ax – позиция первого элемента третей строки

mov bx,ax; занесение в bx значения из ax, так как регистр ax не

; может быть использован для косвенной адресации

mov ax,arr[bx]; занесение в ax первого элемента третей строки

; поиск максимума

mov cx,10-1; будет сравниваться 9 элементов

L1:

add bx,type arr; увеличение на 2 индекса массива

cmp ax,arr[bx]; в ax – текущий максимум

jge no_new_max; если в ax число, меньшее элемента массива, то

mov ax,arr[bx]; занесение нового максимума в ax

no_new_max:

loop L1; цикл, после выполнения которого в ax будет

; находится число 251

mov ah,4ch

int 21h; выход из программы

code ends

end begin

;-------------------------------------------------------------------------------------------------------------------------------------------

;сортировка одномерного массива методом пузырька

 

data segment

array dw 10 dup (4,3,2,5,0)

n dw?

data ends

 

stack1 segment stack

db 100h dup(?)

stack1 ends

 

code segment

assume cs:code,ds:data,ss:stack1

begin:

mov ax,data

mov ds,ax

 

mov n,10

 

mov bx, offset array

mov cx, n

for_i:

dec cx

xor dx, dx

for_j:

cmp dx, cx

jae exit_for_j

jbe no_swap

mov ah, byte ptr bx[di]

mov byte ptr bx[di], al

mov byte ptr bx[si], ah

no_swap:

inc dx

jmp for_j

exit_for_j:

loop for_i

 

mov ah,4ch

int 21h

code ends

end begin






Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 555 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

2207 - | 2160 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.