Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Программа, Ассемблер. Результат выполнения?


Автор: Renatik 14.5.2010, 07:16
Нужно посчитать,какое число будет в итоге в EDX . Насчитался до
0+2+4+6+8+10+12+14=56. Ответ не верный. Help 
Код

lea EBX,M
mov ECX,8
xor EDX, EDX
LP: mov EAX, [EBX+1]
and EAX,0FEh
add EDX, EAX
inc EBX
loop LP
M: DB 1,2,3,4,5,6,7,8,9,10,11,12,13

Автор: airyashov 14.5.2010, 07:45
помоему Я уже где-то Вам ответил сумма будет считаться так
2+2+4+4+6+6+8+8

Автор: GoldFinch 14.5.2010, 08:23
Renatik, запусти в отладчике и протрассируй

Автор: Mikl_ 14.5.2010, 08:31
Renatik, 
Код
  mov ebx,12
    xor edx,edx
    xor eax,eax
@@:    mov al,M[ebx]
    add edx,eax
    dec ebx
    jns @b
    
M db 1,2,3,4,5,6,7,8,9,10,11,12,13

Автор: GoldFinch 14.5.2010, 09:25
Mikl_, что-то твой код не эквивалентен коду ТС, там не 12 итераций, а 8, и and ~1 пропало

Автор: Mikl_ 14.5.2010, 09:39
GoldFinch, 
Код
mov eсx,8
    xor edx,edx
@@:    add dl,M[ecx]
    and edx,0FEh
    loop @b
    
M db 1,2,3,4,5,6,7,8,9,10,11,12,13
 Учитывая что сумма не более 255 так пойдет? smile 
Не внимательно прочитал задание, думал, что требуется подсчитать сумму массива М и попытался исправить код.
А так, как и написал airyashov 2+2+4+4+6+6+8+8=28h или 40 десятичное

Автор: GoldFinch 14.5.2010, 09:57
----

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)