.model tiny
.data
array dw 0,1,2,3,4,5,6,7,8
len equ ($-array)/2
.code
.startup
;задача 1
lea si, array ;адрес массива
mov cx, len ;число элементов
call change
.exit 0
change proc
shr cx, 1 ;число пар, если нечетное число, то последнее не рассматриваем
CLoop:
mov ax, [si] ;меняем местами
xchg ax, [si+2]
mov [si], ax
add si, 4 ;на следующую пару
loop CLoop
ret
change endp
end
.model tiny
.code
.startup
mov al,56h ;анализируемое число
call formula
.exit 0
;Сначала выделяем нужные биты по маске и сравниваем на совпадение с маской (только тогда & даст 1)
;если встретим любое равенство, то по логическому "или" будем иметь 1
;возвращает в al 0 или 1
formula proc
mov ah, al
and al, 11001000b ;x7 & x6 & x3
cmp al, 11001000b
je formula_reply
mov al, ah
and al, 01010110b ;x6 & x4 & x2 & x1
cmp al, 01010110b
je formula_reply
mov al, ah
and al, 11000101b ;x7 & x6 & x2 & x0
cmp al, 11000101b
formula_reply:
;у 386 есть замечательная команда sete...
mov al, 0
jnz formula_ret
mov al, 1
formula_ret:
ret
formula endp
end
data segment
array dw 0,1,2,3,4,5,6,7,8
len equ ($-array)/2
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
lea si, array ;адрес массива
mov cx, len ;число элементов
call change
mov ax,4c00h
int 21h
change proc
shr cx, 1 ;число пар, если нечетное число, то последнее не рассматриваем
CLoop:
mov ax, [si] ;меняем местами
xchg ax, [si+2]
mov [si], ax
add si, 4 ;на следующую пару
loop CLoop
ret
change endp
code ends
end start
code segment
assume cs:code
start:
mov al,56h ;анализируемое число
call formula
mov ax,4c00h
int 21h
;Сначала выделяем нужные биты по маске и сравниваем на совпадение с маской (только тогда & даст 1)
;если встретим любое равенство, то по логическому "или" будем иметь 1
;возвращает в al 0 или 1
formula proc
mov ah, al
and al, 11001000b ;x7 & x6 & x3
cmp al, 11001000b
je formula_reply
mov al, ah
and al, 01010110b ;x6 & x4 & x2 & x1
cmp al, 01010110b
je formula_reply
mov al, ah
and al, 11000101b ;x7 & x6 & x2 & x0
cmp al, 11000101b
formula_reply:
;у 386 есть замечательная команда sete...
mov al, 0
jnz formula_ret
mov al, 1
formula_ret:
ret
formula endp
code ends
end start
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.