![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
BAEVIK |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Мужской Реальное имя: САША Репутация: ![]() ![]() ![]() |
Помогите пожалуйста решить задачу: Вывести индекс массива, с которго начинается самая длинная цепочка четных элементов.
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Какой Ассемблер у тебя? TASM? MASM?
|
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
MASM
|
BAEVIK |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Мужской Реальное имя: САША Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ну, раз MASM, то основная процедура может выглядеть вот так, например:
; Вот так описан массив и переменные:
.data
A dword 1, 2, 32, 4, 5, 61, 72, 8, 92, 14
sz dword 10
b dword 0
i dword 11
; а так - основная процедура:
main proc
mov edx, 0 ; evens
mov ebx, 0 ; max
mov esi, offset A
mov ecx, sz
.while ecx > 0
mov eax, [esi]
test eax, 1
jnz not_even
inc edx
jmp check_max
not_even:
mov b, 1
check_max:
cmp b, 1
je inside
cmp ecx, 1
jne go_next
inside:
cmp edx, ebx
jle not_change
mov i, ecx
mov ebx, edx
not_change:
mov edx, 0
mov b, 0
go_next:
add esi, sizeof(dword)
dec ecx
.endw
print chr$('index = ')
mov eax, sz
inc eax
sub eax, i
sub eax, ebx
print str$ (eax)
ret
main EndP
Под MASM 6.14 отработало. |
Гость |
![]()
Сообщение
#6
|
Гость ![]() |
А можно ли оформить эту программу без использования макросов, на прямую делать обращение.
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Можно и сразу в машинных кодах написать, только зачем? Если, используя MASM (для тех, кто не в курсе, это означает Macro Assembler), писать без Макросов, то зачем использовать MASM? Используй TASM, например... Да мало ли еще трансляторов... Хочешь - меняй программу. А я извращениями не занимаюсь. Если в языке есть нужная мне функциональность, я ее использую, а не заменяю своими велосипедами...
|
BAEVIK |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Мужской Реальное имя: САША Репутация: ![]() ![]() ![]() |
Можно и сразу в машинных кодах написать, только зачем? Если, используя MASM (для тех, кто не в курсе, это означает Macro Assembler), писать без Макросов, то зачем использовать MASM? Используй TASM, например... Да мало ли еще трансляторов... Хочешь - меняй программу. А я извращениями не занимаюсь. Если в языке есть нужная мне функциональность, я ее использую, а не заменяю своими велосипедами... ясно |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 7:34 |