Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
9 / 9 / 8
Регистрация: 20.04.2010
Сообщений: 34

Найти максимальное число в заданном массиве и поместить в регистр DX

18.02.2011, 06:58. Показов 6485. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется массив из n элементов начальный адрес массива 3D1C найти максимальное число в данном массиве и поместить в регистр DX.

С поиском максимального числа и помещением в регистр проблем нет, а вот как сделать начальный адрес массива 3D1C?

З.Ы. Прошу сильно не критиковать может и легкий вопрос, но Ассемблер 2 день изучаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2011, 06:58
Ответы с готовыми решениями:

Число А поместить в регистр Dx, а число B поместить в регистр Cx
Доброго времени суток. Помогите пожалуйста решить задачу: A=24 B=75, Число А поместить в регистр Dx, а число B поместить в регистр...

Ввести с клавиатуры число от 0 до 65535 (в десятичной системе) и поместить его в регистр BX
как понять в задаче: "пользователь вводит с клавиатуры число от 0 до 65535 (в десятичной системе). Enter - конец ввода. Нужно...

Поместить в регистр BX константу 100 (16). Старший байт BX переместить в регистр BL
здраствуйте помогите пож-та разобраться в задаче!написал прогу но не работает! Поместить в регистр BX константу 100(16) . Старший байт BX...

17
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.02.2011, 08:08
bloker,
mov si,3D1Ch регистр SI сейчас содержит начальный адрес массива, теперь вся работа с массивом будет через обращение к [si]
0
9 / 9 / 8
Регистрация: 20.04.2010
Сообщений: 34
18.02.2011, 08:44  [ТС]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
masm
model small
.data
    mas dw 2,7,9,5,22,84,52,78,65,25,77,88,35,65,49,12,11 ;Массив из 17 чисел
    
.stack 100h
 
.code
Begin:
    mov ax,@data ; Инициальзируем
    mov ds, ax   ;регистр DS
;-----------------------------------
    mov si, 3D1Ch
    mov dx, mas[si]  ;В регистр DX помещаем 1 элемент массива
    mov bx, 1    ;Индекс 2 элемемента
    mov cx, 16   ;Число элементов минус один
count:
    cmp DX,mas[BX][si] ;Сравниваем элемент DX с массивом c индексом BX
    jg  next ;Если DX>mas[BX] то переход на метку
    mov DX, mas[BX][si] ; Если DX<mas[BX] поместить в DX большее число
next: inc BX
    loop count
 
    mov ax, 4c00h
    int 21h
 
 
 
 
end Begin

Правильно ли я понял с адресом массива?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.02.2011, 09:34
bloker, нет не правильно, в твоей программе начало массива определяется адресом переменной mas, и регистр SI здесь вообще не нужен, все обращения к массиву идут через mas[BX]
1
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
18.02.2011, 10:35
Цитата Сообщение от bloker Посмотреть сообщение
начальный адрес массива 3D1C
как вы определили адрес? Или он должен быть таким по заданию?
0
9 / 9 / 8
Регистрация: 20.04.2010
Сообщений: 34
18.02.2011, 10:52  [ТС]
Имеется массив из 17 элементов начальный адрес массива 3D1C найти максимальное число в данном массиве и поместить в регистр DX.

Вот такое вот задание.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
18.02.2011, 10:54
bloker,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.model small 
data segment
org 3D1Ch
mas dw 2,7,9,5,22,84,52,78,65,25,77,88,35,65,49,12,11 ;Массив из 17 чисел
data ends
.stack 100h
.code
Begin:
        mov ax, data ; Инициальзируем
        mov ds, ax       ;регистр DS
;-----------------------------------
        mov si, 3D1Ch
    mov dx, [si]
    mov cx, 17
@1:
    lodsw
    cmp ax, dx
    jb @2
    mov dx, ax
@2:
    loop @1
 
        mov ax, 4c00h
        int 21h
end Begin
так пойдет? тока размер exe будет немаленький
1
9 / 9 / 8
Регистрация: 20.04.2010
Сообщений: 34
18.02.2011, 12:05  [ТС]
Во спасибо то, что надо. Пойду дальше изучать.
0
2 / 2 / 0
Регистрация: 17.10.2011
Сообщений: 11
17.10.2011, 17:58
А как можно в регистр записать адрес, допустим первого элемента? Пробовал:
xor si,si
lea al,mas[si]
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
17.10.2011, 19:08
Wonk,
Assembler
1
mov al,mas[si]
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
17.10.2011, 19:38
Vadimych, так в регистр будет записан сам элемент, а не его адрес. Wonk правильно написал, но только в al адрес не поместится, нужен двухбайтовый регистр.
0
2 / 2 / 0
Регистрация: 17.10.2011
Сообщений: 11
17.10.2011, 20:36
Спасибо за совет, просто надеялся обойтись меньшим количеством регистров. Т.к. нужно хранить и значение и адрес для двух элементов массива
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
17.10.2011, 20:47
Точно, адрес. А я и не вник, об чём речь. Не думал, что в один байт будут адрес пихать.

Добавлено через 3 минуты
Цитата Сообщение от Ant1971on Посмотреть сообщение
Wonk правильно написал
В таком разе уж lea si,mas будет правильно.
0
2 / 2 / 0
Регистрация: 17.10.2011
Сообщений: 11
17.10.2011, 21:16
В si не вариант т.к. мне адрес хранить надо. Чтобы поменять минимальный и максимальный местами.
0
 Аватар для Vadimych
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
17.10.2011, 21:55
Wonk, полученный адрес можно хранить где угодно, в переменной, в другом регистре. В стеке, наконец.
0
2 / 2 / 0
Регистрация: 17.10.2011
Сообщений: 11
17.10.2011, 22:49
И еще вопрос. Почему нельзя использовать в таком виде: cmp byte ptr [ax],mas[bx][si]

Добавлено через 21 минуту
И все же ругается на: lea mi,mas[si] mi где mi dw ?
Выдает Expecting scalar type
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.10.2011, 04:29
Цитата Сообщение от Wonk
Почему нельзя использовать в таком виде: cmp byte ptr [ax],mas[bx][si]
Потому что нельзя сравнивать память память
можно:
1) cmp регистр, число
2) cmp регистр, регистр
3) cmp регистр, память
4) cmp память, число
5) cmp память, регистр
Цитата Сообщение от Wonk
ругается на: lea mi,mas[si]
Вместо mi должен быть регистр
0
2 / 2 / 0
Регистрация: 17.10.2011
Сообщений: 11
18.10.2011, 07:13
Спасибо. Уже понял, стал использовать ax как буфер для записи в переменную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.10.2011, 07:13
Помогаю со студенческими работами здесь

Найти максимальное отрицательное число в массиве
в массиве А(20).Найти максимальное отрицательное число.

Найти максимальное число в заданном массиве
13 13 13 13 0 0 15 6 54 54 54 54 7 16 38 87 87 87 87 В заданном массиве найти максимальное значение

В заданном массиве целых чисел найти максимальное и минимальное число
В заданном массиве целых чисел найти максимальное и минимальное число, использую функции определения максимального и минимального числа.

В заданном массиве целых чисел найти максимальное и минимальное число
В заданном массиве целых чисел найти максимальное и минимальное число, использую функции определения максимального и минимального числа.

Найти максимальное число, встречающееся в заданном массиве только два раза
Найти максимальное число, встречающееся в заданном массиве только два раза. Заранее спасибо!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru