Программирование на Ассемблере


         

В этом примере только первое


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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий