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

Найти в массиве первый 0 и заменить все оставшиеся числа 0

25.04.2011, 21:25. Показов 1786. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, нужна помошь людей, шарящих в ассемблере

Задан массив А из N чисел. Найти в этом массиве первый 0 и забить все оставшиеся числа 0, т.е., если массив А был (2,1,0,4,8,0,5), то должны получить массив А (2,1,0,0,0,0,0).

Передалать этот код, он находит сумму чисел больших 2 и образовывает массив B из отрицательных чисел массива A, взяв их по модулю:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Dseg Segment
;  индивидуальные данные - начало
   N dw 10
   A dw -2,3,4,-8,0,1,6,-15,-20,-24
   B dw 10 dup (?)
   TextMA db 'Массив А: ',10,13,'$'
   TextMB db 'Массив В: ',10,13,'$'
   TextSum db 'сумма=$'
;  индивидуальные данные - конец
   Prob db '  $'
   Buffer db 6 dup (?),'$'
   NL db 10,13,'$'
Dseg Ends
 
Stacks segment
   dw 128 dup (?)
Stacks ends
 
Codes segment
  Main proc far
    Assume CS:codes, DS:dseg, SS:stacks
    Mov AX,Dseg
    Mov DS,AX
; индивидуальная часть программы - начало
    LEA DX,TextMA       ;блок 1
    CALL PRT        ;напечатать 'Mассив А:'
    LEA BP,A        ;блок 2
    Mov CX,N        ;загрузить в регистр ВР адрес начала массива А
    CALL PRINTMAS       ;печать массива А
    LEA DX,NL       ;перевод строки
    CALL PRT
    Xor AX,AX           ;блок 2       SUM - регистр AX
    Xor BX,BX           ;блок 3       i - регистр BX
    Xor SI,SI           ;блок 4       j - регистр SI
BL5:
        Mov DI,BX   ;блок 5
        SAL DI,1
        Mov CX,A[DI]
        CMP CX,2
        JG BL6          ;если A[i] >2, то на блок 6
        JMP BL7         ;               иначе на блок 7
    BL6:               
        Add AX,CX
        JMP BL10        ; переход на блок 10
    BL7: 
        Cmp CX,0        ;блок 7  
        JL BL8          ;  если А[i]<0, то на блок 8
        JMP BL10        ;  иначе на блок 10
   BL8:
        NEG CX          ; изменили знак A[i]
        Mov DI,SI
        SAL DI,1
        Mov B[DI],CX    ; B[j]:=-A[i]
        INC SI          ;  блок 9
   BL10:
        INC BX         ;   блок 10
        CMP BX,N        ;  блок 11
        JL BL5          ;если i<N, то на блок 5
        LEA DX,TextMB       ;блок 9
        CALL PRT        ;напечатать 'Mассив В:'
        LEA BP,B
        Mov CX,SI       ;перепишем в СХ SI=j
        CALL PRINTMAS       ;печать массива В
        LEA DX,NL
        CALL PRT            ; перевод строки
        Lea DX,TextSUM      ;  печать текста "сумма="
        CALL PRT
        CALL PRN            ;  печать полученной суммы
; индивидуальная часть программы - конец    
    Mov AH,4CH
    Int 21h
  Main Endp
 ;****************************************************************
  CONVBA PROC
…
  CONVBA endp
;****************************************************************
  PRINTMAS PROC              ; процедура печати массива
; процедура печатает по 8 чисел в строке
; адрес начала массива записан в регистре ВР, количество элементов ;массива – в регистре СХ.
    push AX
    push BX
    push DX
    push SI
 
    Mov BX,0
    Xor DX,DX
PRMAS1:
          Mov SI,BX
           SAL SI,1
           Mov AX,[DS:BP] [SI]
           push BX
           LEA BX,Buffer
           CALL CONVBA
           POP BX
           push DX
           LEA DX,Buffer
           Mov AH,09h
           Int 21h
           LEA DX,PROB
           Int 21h
           POP DX
           Inc DX
           Inc BX
          Cmp BX,CX
          Jge psmas
           CMP DX,8
           JL PRMAS2
Psmas:
           LEA DX,NL
           Mov AH,09h
           Int 21h
           Xor DX,DX
    PRMAS2:
           CMP BX,CX
           JL PRMAS1
           POP SI
           POP DX
           POP BX
           POP AX
           RET
  PRINTMAS endp
;*******************************************************
  PRT PROC  ; процедура печати текста
    …
  PRT ENDP
;******************************************************
  PRN PROC  ; процедура печати числа
   …
  PRN ENDP
;******************************************************
Codes ends
END MAIN
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2011, 21:25
Ответы с готовыми решениями:

Найти в массиве все отрицательные числа и заменить их абсолютными значениями
1) найдет в массиве все отрицательные числа, заменит их абсолютными значениями; 2) отсортирует массив по возрастанию методом пузырьковой...

Найти минимум в массиве и заменить все отрицательные чётные числа на его значение
Ребята, посмотрите пожалуйста в чем не доработка или ошибка Судя по условию, нечетные числа все равно отрабатывает, к if-у и else уже...

Найти минимум в массиве и заменить все отрицательные чётные числа на его значение
Ребята, посмотрите пожалуйста в чем не доработка или ошибка Судя по условию, нечетные числа все равно отрабатывает, к if-у и else уже...

2
1 / 1 / 0
Регистрация: 21.04.2011
Сообщений: 8
30.04.2011, 10:58  [ТС]
Привет, помогите пожалуйста реализовать 3 задачи, горю ппц:

1. Задан массив А из N чисел. Найти в этом массиве первый 0 и забить все оставшиеся числа 0, т.е., если массив А был (2,1,0,4,8,0,5), то должны получить массив А (2,1,0,0,0,0,0).
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
01.05.2011, 09:18
1)
Assembler
1
2
3
4
5
mov   di,offset A
mov   cx,N
xor   ax,ax
repne scasw
rep   stosw
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2011, 09:18
Помогаю со студенческими работами здесь

Очередь. Напечатать из файла сначала все числа меньше а, потом все числа на промежутке [a;b], а в конце все оставшиеся
Создать файл целых чисел. За один просмотр без использования дополнительных файлов напечатать элементы файла в таком порядке: сначала все...

Массив: Найти первый максимум в этом массиве, а затем все числа до этого элемента упорядочить по возрастанию, а после — по убыванию.
Дан массив из n целых чисел. Найти первый максимум в этом массиве, а затем все числа до этого элемента упорядочить по возрастанию, а после...

Если в массиве A(n) все числа одного знака, то найти сумму элементов массива, иначе – заменить нечетные на 0
Если в массиве A(n) все числа одного знака, то найти сумму элементов массива, иначе – заменить нечетные на 0.

В массиве заменить первый и второй элемент на определенные разные числа
Есть рандомно задаваемый одномерный массив. Как в этом массиве заменить первый и второй элемент на определенные РАЗНЫЕ числа? Допустим у...

Заменить в массиве все нечетные элементы на первый после него четный элемент
Объявить массив размерностью n. Массиву должны быть присвоены случайные значения в диапазоне от -20 до 50 включительно. Заменить в массиве...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru