Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Задача на Массив

Автор: BAEVIK 20.04.2009 15:06

Помогите пожалуйста решить задачу: Вывести индекс массива, с которго начинается самая длинная цепочка четных элементов.

Автор: volvo 21.04.2009 15:39

Какой Ассемблер у тебя? TASM? MASM?

Автор: Гость 22.04.2009 1:47

MASM

Автор: BAEVIK 22.04.2009 2:57

Цитата(volvo @ 21.04.2009 12:39) *

Какой Ассемблер у тебя? TASM? MASM?

MASM

Автор: volvo 22.04.2009 3:10

Ну, раз 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 отработало.

Автор: Гость 16.05.2009 17:42

А можно ли оформить эту программу без использования макросов, на прямую делать обращение.

Автор: volvo 16.05.2009 21:44

Можно и сразу в машинных кодах написать, только зачем? Если, используя MASM (для тех, кто не в курсе, это означает Macro Assembler), писать без Макросов, то зачем использовать MASM? Используй TASM, например... Да мало ли еще трансляторов... Хочешь - меняй программу. А я извращениями не занимаюсь. Если в языке есть нужная мне функциональность, я ее использую, а не заменяю своими велосипедами...

Автор: BAEVIK 21.05.2009 5:51

Цитата(volvo @ 16.05.2009 17:44) *

Можно и сразу в машинных кодах написать, только зачем? Если, используя MASM (для тех, кто не в курсе, это означает Macro Assembler), писать без Макросов, то зачем использовать MASM? Используй TASM, например... Да мало ли еще трансляторов... Хочешь - меняй программу. А я извращениями не занимаюсь. Если в языке есть нужная мне функциональность, я ее использую, а не заменяю своими велосипедами...

ясно