Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
bbarmaley
0 / 0 / 0
Регистрация: 01.02.2015
Сообщений: 1
1

Формирование массива

01.02.2015, 19:08. Просмотров 642. Ответов 1
Метки нет (Все метки)

Нужно сформировать массив из десяти чисел, найти в нём отрицательные числа, сложить их и найти абсолютное значение результата. Вот пример по которому надо сделать.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
IDEAL               ; Режим IDEAL
P386                ; Тип процессора - Intel 80386
 
 
;Сегмент стека
SEGMENT _stack para use16 stack 'stack'
    db 100h dup(?)              ; Выделение 256 байт в сегменте стека 
ENDS _stack
 
;Сегмент данных
SEGMENT _data para use16 public 'data'
        m1 db 1, 3, 8, 9, 13, 16, 1, 2, 9, 14
ENDS _data
 
;Сегмент кода
SEGMENT _code para use16 public 'code'
    ASSUME  cs:_code,ds:_data,ss:_stack,es:nothing
    
    proc _main
    mov     ax,_data    ;Явная инициализация сегмента данных
    mov     ds,ax       ;Загрузка в сегментный регистр базового адреса сегмента
    mov di,0    ; максимум
    mov     bx,0  ; номер пересчета
cycle:
    mov     dl,[m1+bx] ; выхватываем из памяти
    cmp     dx,di      ; сравнение с максимальным
    jl menshe
    mov     di,dx      ; новое максимальное
    mov     cx,bx      ; номер нового максимального
    
 
menshe: inc bx  ; увеличиваем номер
    cmp     bx,9  ; условие выхода
    jg exit
    jmp cycle
         
exit:   inc cx; увеличиваем на 1 т.к. реальный номер числа больше на 1 номера пересчета
    imul    cx,di    ; умножаем макимум на номер макс
    mov bx,cx    ; результат в CX по условию
    mov     ah,4Ch      ;Задание функции прерывания DOS - завершение программы      
    int     21h     ;Вызов прерывания DOS (21h)
    endp _main
 
ENDS _code
END _main               ;Конец программы с точкой входа _main
Добавлено через 18 часов 29 минут
Задал 2 массива, во второй из первого закидываю все отрицательные. Теперь вопрос: как по модулю сложить элементы второго массива. Вот то что уже получилось.
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
31
32
33
IDEAL               ; Режим IDEAL
P386                ; Тип процессора - Intel 80386
 
 
;Сегмент стека
SEGMENT _stack para use16 stack 'stack'
    db 256 dup(?)               ; Выделение 256 байт в сегменте стека 
ENDS _stack
 
;Сегмент данных
SEGMENT _data para use16 public 'data'
        mas1 dw 1, 2, -3, -4, 5, 6, 7, 8, -9, 10 
        mas2 dw 10 dup (0)
ENDS _data
 
;Сегмент кода
SEGMENT _code para use16 public 'code'
    ASSUME  cs:_code,ds:_data,ss:_stack,es:nothing
    
        proc_main
        mov ax,_data ;Настраиваем сегментный регистр
        mov ds,ax
        mov si,_offset mas1 ;начало первого массива
        mov di,_offset mas2 ;начало второго массива
        mov cx,_10           ;кол-во чисел в первом массиве
        mov dx,_0            ;кол-во отрицательных чисел
        lp:
        mov ax,[si] ;взять число из первого массива
        test ax,ax ;проверить знак
        jns nxt ;если не отрицательное, то пропустить
        mov [di],ax ;если отрицательное, записать во второй массив
        nxt: add si,2 ;перейти к следующему элементу первого массива
        loop lp ;обработать весь массив
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2015, 19:08
Ответы с готовыми решениями:

Формирование crc-кода
нужна программа,а я не понимаю что от меня требуют((пишу нужный фрагмент,а...

Формирование кода ошибки и корректности
Постановка задачи: Мой предварительный алгоритм: Вот, то что я смог...

Формирование таблицы символов ASCII
Задание : сформировать таблицу символов в памяти во вложенных циклах, затем...

Формирование и вывод на экран таблицы символов ASCII
Дан пример по строкам: stack_segment segment stack dw 32 dup (?)...

Двуменые Массивы.Формирование одномерного массива из двумерного массива по условию
1)В двумерном массиве B найти минимальный элемент среди элементов,расположенных...

1
Mycola
23 / 13 / 47
Регистрация: 23.03.2013
Сообщений: 157
21.07.2015, 17:30 2
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
;Сегмент стека
_stack segment stack 'stack' ;эсли не указываеться тип процессора выше 386 то директиву use16 можна упустить она стандартная, и стандартно выравнивание para
    db 100h dup(0)
_stack ends
 
data segment 'data'
    array dw 1, 2, 213, 132, 23, 839, 412, 0, 7398, 100
    rezult dw ?
data ends
 
codesg segment 'code'
    assume cs:codesg, ds:data, ss:_stack
    main:
        mov ax, data
        mov ds, ax
        mov cl, 10
        xor ax, ax
    _while: test word ptr [array+bx], 08000h ;провека знака
        jz next
        add ax, word ptr [array+bx] ;в ax сумма всех отрицательных элементов массива
        next: add bx, 2
    loop _while
    neg ax      ;меняет знак
    mov rezult, ax
    mov ax, 4c00h
    int 21h
codesg ends
    end main
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2015, 17:30

Формирование нового массива из сумм пар элементов исходного массива.
Задали линейный массив А, содержащий четное количество элементов. Вывести...

Формирование и вывод на экран одномерного массива, состоящего из полусумм строк двумерного массива
:gsorry:помогите.... Составьте программу формирования и вывода на экран...

Формирование массива целых чисел из массива строк с числами
индекс выходит из границ массива, в комментариях я написал что и как......


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru