русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Масиви у Асемблері. Програма на Асемблері. Приклад масив елементів

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

Текст програми

.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 ; закінчення програми


Результат роботи програми

Переглядів: 1643

Повернутися взміст


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн