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

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

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

> Массив целых цисел
John
сообщение 2.11.2007 23:05
Сообщение #1


Пионер
**

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

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


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

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

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


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 3.11.2007 17:57
Сообщение #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 - 3.11.2007 17:58


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

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

 

- Текстовая версия 25.07.2025 12:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"