Заданы массивы A и В из N = 8 элементов. Сформировать новый массив С по правилу: если у элементов Ai и Bi биты 0, 1 и 2 совпадают, то Ci = Аi + Вi.

.686 ; директива определения типа микропроцессора

.model flat, stdcall ; задание линейной модели памяти
; но соглашения ОС Windows
option casemap:none ; отличие малых и больших букв
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\fpu.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\fpu.lib
ExitProcess proto:DWORD

.data ; директива определения данные
st1 db «Вывод массива! С», 0
st2 db 10 dup(?),0
ifmt db «%d»,0
masivA db 7,34,34,45,2,6,2-6
masivB db 54,2,7,43,13-7,65,9
masivC db 8 dup(0)
work1 db 0
work2 db 0
prom dd 0

.code ; директива начала кода программы
_start:
mov eax,0
mov ebx,0
mov ecx,8
mov edx,0

lea esi, masivA
lea edi, masivB
lea edx, masivC

M1:
mov prom,ebx
mov al, byte ptr[esi+ebx]
mov bl, byte ptr[edi+ebx]
mov work1, al
mov work2, bl
and eax,07h
and ebx,07h
sub eax,ebx
jz M3

M2:
mov ebx, prom
inc ebx
loop M1
jmp M4

M3:
mov al, work1
mov bl, work2
add al,bl
mov [edx+ebx],al
jmp M2

M4:
mov edx,0
mov ecx,08h
Prom:
lea esi,masivC;
mov al[esi+edx]
cmp al,0
jnz _M2
_M1: inc edx
loop Prom
jmp _M3
_M2:
mov ebx,eax
jmp _M1
_M3:
invoke wsprintf \
ADDR st2 \
ADDR ifmt \
ebx
invoke MessageBox \
NULL \
addr st2 \
addr st1 \
MB_OK
invoke ExitProcess,0
end _start ; окончание программы

Реклама

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.