Задача на массивы (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