Суббота, 2025-08-30, 0:55 AM
Приветствую Вас Гость | RSS
Главная | Массивы в Ассемблер | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

    Массивы в Ассемблере. Программа на Ассемблере. Пример массив элементов

     

     

    Пример задачи с использованием массива на ассемблере: Заданы массивы 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    ; окончание программы


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

    uCozCopyright MyCorp © 2025