Помощь - Поиск - Пользователи - Календарь
Полная версия: Нужна помощь по ассемблеру!!!!
Форум на все случаи жизни > Программирование, скрипты, графика, WEB-строительство > WEB дизайн и прикладное программирование
Lex
Help me All
Немогу помочь сыну с решением задачи (ну не силен я в ассемблере)

Задача на применение
Применение логических инструкций

Дан массив из 5 байт. Рассматривая его, как массив из восьми пяти-
битных слов, посчитать количество слов с чётным числом единиц в слове.
ManHunter
решение на FASM:

Код
format PE GUI 4.0
entry start

include 'c:\program files\fasm\include\win32a.inc'

section '.data' data readable writeable

xbytes  db 00111000b; Данные для задачки
        db 11111110b
        db 01010101b
        db 00001001b
        db 00000110b

mask    db 'Count: %i',13,10,13,10
        db '%i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i',13,10
        db '%i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i - %i%i%i%i%i',13,10,0

title   db 'Solution',0
tmp     rb 100

section '.code' code readable executable
start:
        mov     esi,xbytes+4
loc_1:
        lodsb
        mov     ecx,8
loc_2:
        xor     edx,edx
        test    al,00000001b
        jz      loc_3
        inc     edx
loc_3:
        push    edx
        shr     al,1
        loop    loc_2

        dec     esi
        dec     esi
        cmp     esi,xbytes
        jnb     loc_1

        xor     eax,eax
        xor     esi,esi
loc_4:
        xor     edi,edi
        mov     ecx,5
loc_5:
        add     edi,[esp+eax*4]
        inc     eax
        loop    loc_5

        test    edi,edi
        jz      loc_6
        test    edi,1
        jnz     loc_6
        inc     esi
loc_6:
        cmp     eax,40
        jb      loc_4

        invoke  wsprintf,tmp,mask,esi
        add     esp,12+(8*5*4)

        invoke  MessageBox,HWND_DESKTOP,tmp,title,MB_OK
        invoke  ExitProcess,0

section '.idata' import data readable writeable

library kernel32,"KERNEL32.DLL",\
        user32,"USER32.DLL"

include "c:\Program Files\FASM\INCLUDE\apia\kernel32.inc"
include "c:\Program Files\FASM\INCLUDE\apia\user32.inc"


исходник и скомпилированный exe под этот пример в аттаче. камменты, извини, лениво было расставлять. пусть сын сам разбирается, код несложный
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2008 Invision Power Services, Inc.