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 |