Задача на массивы (masm32) - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, с реализацией задачи на ассемблере, буду очень благодарен. Задан массив А из N = 80 элементов. Структура массива А такая: X1, Y1; X2, Y2; … . Реализовать программу определения количества пар, для которых выполняется условие Xi>Yi.

Решение задачи: «Задача на массивы (masm32)»

textual
Листинг программы
.386   ; директива определения типа микропроцессора
.model  flat, stdcall ; задание линейной модели памяти и соглашения ОС Windows
option casemap:none ; отличие строчных и прописных букв
include \masm32\include\windows.inc  ; файлы структур, констант …
include \masm32\include\kernel32.inc  ; системные функции применений…
include \masm32\include\\user32.inc    ; файлы интерфейса …
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
 
.DATA   ; директива начала сегмента данных
dwArray         dw    80 DUP(?) 
dwDimenArray    dw    (($ - dwArray)/2)/2
msg1 db 10,13,"The number of pairs:$"
data dw   128  dup(0)
 
titl db "Вывод через функцию MessageBox",0; название упрощенного окна 
st1 dw ?,0 ; буфер выведения сообщения. dw для небольших чисел
ifmt db "Вывод чисел с памяти через MessageBox:", 0dh,0ah,
"BH = %d", 0dh,0ah, ;
 
.code
_start:
    mov ax, data
    mov ds, ax
    mov es, ax
    xor bx,bx
    xor di,di   
    lea si,dwArray
    mov cx,dwDimenArray
check:
    MOV AX,[eax]
    CWD
    CMP AX,[eax+2]
    JL skip
    INC BH    
 
skip:
    add si,4       
    mov ax, 4c00h 
    int 21h    
 
invoke wsprintf,  \ ; АРІ-функция превращение числа
ADDR st1, \ ; адрес буф., куда будет записан преобразованный символ
ADDR ifmt, \ ; адрес строки преобразования формата
BH ; ячейки памяти, которые преобразовываются
invoke MessageBox, \ ; АРІ-функция выведение окна консоли
NULL, \ ; hwnd – идентификатор окна
addr st1, \ ; адрес строки, который содержит текст сообщения
addr titl,  \ ; адрес строки, который содержит заглавие сообщения
MB_ICONINFORMATION;+180000h ; вид окна
invoke ExitProcess, 0 ; возвращение управления ОС и освобождение ресурсов
 
END _start          ; окончание программы с именем _start

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы