В этом примере только первое
count dd 11
b db 11 dup (0)
codeseg
begin:
mov ecx, [count]
mov eax, 0; индекс исходного массива
mov edx, 0 ;индекс результирующего массива
fori:
mov bl, [a+eax]
mov bh, bl
and bl, (1 shl 0) or (1 shl 4) or (1 shl 1) or (1 shl 3) or (1 shl 7)
xor bl, (1 shl 0) or (1 shl 4)
jnz short next
mov [b+edx], bl
inc edx
next:
inc eax
loop fori
call ExitProcess
end begin
В этом примере только первое число удовлетворяет поставленным требованиям.
Пример 3. Вычислить значение булевского выражения.
Значение выражения равно истине, если значение хотя бы одного слагаемого равно истине. Для выделения требуемых битов и проверки единичных битов используются константы:
; Первое слагаемое
c11 db 11010110b
c12 db 10000110b
; Второе слагаемое
c21 db 01101100b
c22 db 01001000b
; Третье слагаемое
c31 db 00000111b
c32 db 00000101b
Пусть вычисляется значения для байта
x db 10101010b
Результат записывается в поле RES и равен 0 для ответа «Ложь» и 1 для ответа «Истина».
RES db ?
; Проверка первого слагаемого
mov RES, 1; Пусть ответ равен «Истина»
mov al, [x]
and al, [c11]
xor al, [c12]
jz short true
; Проверка второго слагаемого
mov al, [x]
and al, [c21]
xor al, [c22]
jz short true
; Проверка третьего слагаемого
mov al, [x]
and al, [c31]
xor al, [c32]
jz short true
mov [RES], 0
true:
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий