powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Assembler поиск максимального числа по модулю в массиве
5 сообщений из 5, страница 1 из 1
Assembler поиск максимального числа по модулю в массиве
    #39389008
Ratty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго здоровья!
И так, возникла задача: поиск максимального числа по модулю в массиве. Assembler изучал сравнительно мало.
Если бы необходимо было решить задачу на языке высокого уровня (с++, pascal, php, javascript) то без проблем. Алгоритм таков: создаем массив из 7 чисел, присваиваем максимальное 1-й элемент массива по модулю, затем в цикле проверяем, элемент |[i]| ,больше максимального? если да, то максимальное это элемент [i]

Ну а в ассемблере начинаю разбираться с нуля. Цикл организовывается через loop, цикл будет выполняться CX раз, причем не с инкрементом, а декрементом. Простое сравнение происходит с помощью CMP.

Вопросы: Как правильно обратиться к элементу массива? Как сравнить элемент с максимальным по модулю?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
; Search max absolute value

org 100h
   
   mov ax, array      ; AX = array
   mov cx, 7          ; CX = 7 (array length)
   
    cycle:
    






    loop cycle
    
    mov ax, 4C00h    ;
    int 21h          ; return to OS

array dw 5,-2,7,4,3, 0, -9   ; define arary
max dw ?                     ; define max
...
Рейтинг: 0 / 0
Assembler поиск максимального числа по модулю в массиве
    #39389380
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Массив - надо использовать косвенную индексацию.

Модуль - сделай сам процедуру, оператор call

Интересно, где нашел компьютер с MSDOS ?

Актуальный ассемблер вот https://flatassembler.net
...
Рейтинг: 0 / 0
Assembler поиск максимального числа по модулю в массиве
    #39389382
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот учебник http://asmworld.ru/uchebnik/
...
Рейтинг: 0 / 0
Assembler поиск максимального числа по модулю в массиве
    #39389417
fortress
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напсиать на ЯВУ, посмотреть как это реализовал компилятор через
отладчик/дизасемблер )
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Assembler поиск максимального числа по модулю в массиве
    #39389956
Ratty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortress, Ваш вариант слишком жесткий.
Нашлось решение, возможно кому-то будет полезно:

Код: plaintext
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.
31.
; Search min absolute value

org 100h
    
    lea bx, array                         ; bx = array_address
    mov cx, array_length                  ; cx = counter = array_length
    mov ax, [bx]                          ; ax = first element of array
    mov max, ax                           ; max = first element of array
    xor dx, dx                            ; dx = 0
        
        cycl:
           mov ax, [bx]                   ; ax = element of array 
           cmp ax, 0                      ; if ax >= 0
           jge polojitelnoe               ; then go to point "polojitelnoe" 
           neg ax                         ; else reverse
        polojitelnoe:
           cmp ax, dx                     ; if ax >= 0
           jbe pass                       ; then go to point "pass"
           mov dx, ax                     ; else dx = ax, dx is max
        pass:
           inc bx                         ; bx = bx + 1 (increment bx)
           inc bx                         ; bx = bx + 1 (increment bx)
        loop cycl
        
    mov max, dx                           ; max = dx

    int 21h                               ; return to OS

array dw 4, -3, 1, -9, 0, 2, 7, 5, 3      ; define array
array_length = ($ - array)/2              ; calc array 
max dw ?                                  ; empty variable for max
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Assembler поиск максимального числа по модулю в массиве
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]