Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18

Работа с массивом

27.05.2012, 16:33. Показов 1218. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: 1) Дан массив целых знаковых чисел. Вывести на экран символы '*' в количестве, равном сумме всех чисел.
2. Дана строка. Определить верно ли, что в ней есть три подряд идущих одинаковых символов.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2012, 16:33
Ответы с готовыми решениями:

Работа с массивом
Ребят, помогите пожалуйста : 1) С помощью двух циклов записываю в текстовый файл массив с числами, разделенные пробелом, нужно сделать...

Работа с массивом
Есть массив допустим состоящий из элементов 1 2 3 4 5 6 7 8 9 10 надо начиная с 6 элемента по 10 поделить эти значения на два, как это...

Работа с массивом
Здравствуйте читающие! Как присвоить в массив все значения одного столбца? Есть ли такая функция? В гугле искал присваивание...

6
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
28.05.2012, 16:21
Второе задание понятно. Можно строку вводить и с клавиатуры.
А вот в первом: Дан массив целых знаковых чисел. Где он дан? Если в исходнике, то проще, а ввод с клавиатуры немного сложнее будет.
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
28.05.2012, 17:46
Для первой задачи:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mov si,offset massiv
mov bx,0
mov cx,длина
looperunda:
lodsb
add bl,al
adc bh,0
loop looperunda
mov cx,bx
looperw:
mov ah,2
mov dl,'*'
int 21h
loop looperw


Цитата Сообщение от Ermol499 Посмотреть сообщение
верно ли, что в ней есть три подряд идущих одинаковых символов.
Нет!
1
156 / 53 / 4
Регистрация: 28.05.2012
Сообщений: 120
28.05.2012, 18:00
Ermol499, по первому заданию глянь в сторону инструкции LODS. Настраиваешь регистры для работы с ней и началом массива. Например в ecx заносишь число элементов массива, а, например, в ebx 0. Далее, организуешь цикл, используя ecx декрементируемый (реверсивный) счётчик пока не нуль. На каждом цикле загружаешь при помощи LODS в eax, прибавляешь к значению в ebx eax. Инкрементируешь (е)si. После окончания этого цикла получаешь в ebx сумму элементов массива. А далее (см. прим.), организуешь новый цикл, в качестве значения счётчика полученную сумму в котором на каждом цикле выводишь один символ *.
прим. Но, так как числа у нас знаковые, то мы можем получить отрицательное число. Поэтому тут надо уточнить задачу, требуется ли нам использовать абсолютное значение суммы, или как мы там будем эту ситуацию обрабатывать.
По второй задаче. Так же организуешь цикл наподобие как и в первой. Смотри, чему у тебя равен символ (байт, два байта и тд). В цикле заносишь значения в аккумулятор. Сохраняешь полученное значение в любой другой регистр, но после того, как сравнишь сохранённое и новое. Если занёсённое значение равно сохранённому, увеличиваешь, например, dx, который изначально 0. Если не равно, обнуляешь dx. Если значение dx станет равно трём, выходишь из цикла, значит три в подряд идущие элемента есть. Если за цикл dx так и не станет равен 3, значит нет.
Ну вроде, я и ответил, и если человек ничего в асме не понимает, то ему это не поможет.
1
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18
28.05.2012, 18:06  [ТС]
Спасибо, буду разбираться.
0
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18
31.05.2012, 20:10  [ТС]
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
segment .data
str1 db 13,10,"ksfjxhccchsb",'$'
A db "Yes",'$'
B db "No",'$'
segment .text
org 100h
xor ebx,ebx
mov esi,str1
mov ecx,12
 
loop1:
lodsb
cmp ax,bx
mov bx,ax
je sl
jne obn
loop loop1
jmp rez
 
sl:
inc dx,1
ret
obn:
xor dx,dx
ret
 
rez:
cmp dx,2
je A
jne B
 
A:
mov ah,09h
mov dx,[A]
int 21h
jmp exit
 
B:
mov ah,09h
mov dx,[B]
int 21h
jmp exit
 
exit:
mov ah,10h
int 16h
mov ax,4c00h
int 21h
Вот получилась такая прога, много переходов, не уверен, что они правильны и вообще ничего не компилируется в nasm'e. Можете указать ошибки ? :>
0
0 / 0 / 0
Регистрация: 20.05.2012
Сообщений: 18
01.06.2012, 20:18  [ТС]
Полностью переделал программу, все работает.
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
segment .data         
str1 db "jnbvvsdddxwwq"
strlen equ $-str1
A db "YES$"
B db "NO$"
segment .text
org 100h
mov dx,B
mov si,str1
mov cx,strlen
 
lodsb
mov bl,al
 
cyc:
lodsb
cmp al,bl
jne con
 
lodsb
cmp al,bl
jne con
mov dx,A
jmp end
 
con: 
mov bl,al
loop cyc
 
end: mov ah, 09
int 21h
mov ah,10h
int 16h
mov ax, 4C00h 
int 21h
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2012, 20:18
Помогаю со студенческими работами здесь

Работа с массивом
Доброго времени суток всем дорогие друзья! Помоги разобраться создал массив 5 на 5 нарисовал его он состоит из 1 и 0, задача нужно...

Работа с массивом.
найти количество элементов мвссива, которые больше 50. sos!!!! удалить из массива заданный элемент. сортировать массив по убыванию. ...

Работа с массивом
Всем привет! Помогите понять как надо, а то рецептов куча, но они отличаются сильно друг от друга и вызывают сомнения. Суть проста:...

Работа с массивом
Товарищи, помогите воспрепятствовать отчислению Сдавал уже несколько раз Все не принимали Возможно сможете вы МАССИВЫ В...

Работа с массивом
Помогите поменять кусок программы что бы считывались не байты , а был двумерный масси x и y где на пересечении пиксель, состоящий из 3...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru