Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

ushankin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
        p386
        ideal
        model   tiny
 
 
dataseg
  key   db ?                    ; код четности:  0 - четное кол. бит в массиве
                                                 1 - нечетное
  file  db 'bits.key',0         ; имя файла для сохранения ключа
  war   db 'WARNING! Check error!',13,10,'$'
 
  ; массив для тестирования
  testdata:
        db 1,2,13,2,3,23,8,5,4,2
  testsize = $-testdata
 
 
codeseg
        org     100h
    start:
        mov     cx,testsize
        lea     si,[testdata]
        call    Check           ; получаем код четности
 
        cmp     [key],bl
        je      savetofile
        lea     dx,[war]
        mov     ah,9
        int     21h
    savetofile:
        mov     [key],bl
        call    Save
        retn                    ; выход в дос
 
 
; на входе:
;       ds:[si] - массив
;       cx      - размер массива
; на выходе:
;       bl      - код четности
proc Check
        xor     bx,bx
    __loop:
        lodsb
        mov     di,8
    __inloop:
        shr     al,1
        adc     bl,0            ; нас интересует младшая часть
        dec     di              ; от общего количества установленных битов
        jnz     __inloop
        loop    __loop
        and     bl,1
        ret
endp
 
; сохраняет значение Key в файл file
proc Save
        mov     ah,3ch          ; создаем файл
        xor     cx,cx
        lea     dx,[file]
        int     21h
        jc      __quit
        mov     bx,ax
        mov     ah,40h          ; записываем
        mov     cx,1            ; один байт
        lea     dx,[key]
        int     21h
        mov     ah,3eh          ; закрываем файл
        int     21h
    __quit:
        ret
endp
 
end start


Всего записей: 3 | Зарегистр. 22-10-2006 | Отправлено: 17:01 25-02-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru