Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Assembler поиск максимального числа по модулю в массиве / 5 сообщений из 5, страница 1 из 1
22.01.2017, 09:28
    #39389008
Ratty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Assembler поиск максимального числа по модулю в массиве
Всем доброго здоровья!
И так, возникла задача: поиск максимального числа по модулю в массиве. 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
23.01.2017, 11:13
    #39389380
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Assembler поиск максимального числа по модулю в массиве
Массив - надо использовать косвенную индексацию.

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

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

Актуальный ассемблер вот https://flatassembler.net
...
Рейтинг: 0 / 0
23.01.2017, 11:14
    #39389382
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Assembler поиск максимального числа по модулю в массиве
Вот учебник http://asmworld.ru/uchebnik/
...
Рейтинг: 0 / 0
23.01.2017, 11:58
    #39389417
fortress
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Assembler поиск максимального числа по модулю в массиве
Напсиать на ЯВУ, посмотреть как это реализовал компилятор через
отладчик/дизасемблер )
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.01.2017, 00:06
    #39389956
Ratty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Assembler поиск максимального числа по модулю в массиве
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
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Assembler поиск максимального числа по модулю в массиве / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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