IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Массив целых цисел
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Женя

Репутация: -  1  +


Привет всем!! Вот в четверг начали изучать в инсте ассемблер и сразу вот такое задание:

Из массива целых чисел, определенных в области данных программы в формате слова, найти минимальное и максимальное значение. Сохранить их разность как результат в области данных программы. Пояснить особенности выполнения машинных команд в отладчике.

Помогите пожалуйста я ничего не понимаю в этом ассемблере,, и еще можете подсказать книгу с доступным методом изложения материала!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Я бы посоветовала учебник для вузов...
Юров В.И. Assembler
Изд-во Питер
у меня 2006 года, может, уже и 2007 есть.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


;самая простая модель памяти - один сегмент кода и один сегмент данных
.model small

;устанавливаем размер стека
.stack 2048

;----- сегмент данных -----
.data
;массив
a dw 4, 4, 2, -5, 6, -23, 45, 35, 5, -11, 17
;константа N = количество элементов в массиве
N equ ($ - a) / 2

;сюда сохраним разность максимума и минимума
result dw ?

;----- сегмент кода -----
.code
;метка entry - точка входа в программу, с нее начинается выполнение
;какую метку считать точкой входа указывается в директиве end в конце модуля
entry:
;инициализация сегмента данных
mov ax,@data
mov ds,ax

;поиск минимума и максимума
lea si,a ;si = адрес (смещение) массива
cld

lodsw ;ax = первый элемент массива
mov bx,ax ;в bx будет минимум, для начала - первый
mov dx,ax ;в dx будет максимум, для начала - первый

mov cx,N ;цикл на N интераций
minmax:
lodsw ;ax = очередной элемент массива
cmp ax,bx ;поиск минимума: если ax < bx, то bx = ax
jge minmax1
mov bx,ax
minmax1:
cmp ax,dx ;поиск максимума: если ax > dx, то dx = ax
jle minmax2
mov dx,ax
minmax2:
loop minmax ;повторять с метки minmax N раз

sub dx,bx ;dx = dx - bx = максимум - минимум
mov result,dx ;result = dx

mov ax,4C00h ;выход из программы - вызов функции DOS API
int 21h

;директива end указывает конец модуля и точку входа,
;если это основной (или единственный в программе) модуль
end entry


Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 30.09.2020 13:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name