русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Программа: Организация ввода-вывода при работе с массивами на Ассемблере

Задание:

Написать программу на ассемблере вычисления с выводом данных в окно консоли: Задано массив А из N = 4 элементов. Написать программу определения суммы элементов массива А, для которых биты 0 и 5 совпадают.

Текст программы:

.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 75,31,88,32
sum dw 0
iden db 0
work1 db 0
work2 db 0
prom dd 0

. Code; директива начала кода
_start:
mov eax, 0
mov ebx, 0
mov ecx, 3
mov edx, 0

lea esi, masivA

M1:
mov prom, ebx
mov al, byte ptr [esi + ebx]; пересылки значения массива в младший регистр al
inc ebx
mov bl, byte ptr [esi + ebx]; пересылки значения массива в младший регистр bl
mov work1, al
mov work2, bl
and eax, 21h
and ebx, 21h
sub eax, ebx проверка сходимости битов
jz M3
mov iden, 0;идентификатор. Он необходим для суммы.

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

M3:
mov al, work1
dec iden
jz Q1; если идентификатов = 0, тогда перейти на метку Q1
mov iden, 1
mov bl, work2
Q1: add sum, ax; подсчета суммы
add sum, bx; подсчета суммы
jmp M2

M4:
mov ebx, 0
mov bx, sum; пересылка значение суммы в регистр
invoke wsprintf, \
ADDR st2, \
ADDR ifmt, \
ebx
invoke MessageBox, \; функция вывода значения
NULL, \
addr st2, \
addr st1 \
MB_OK
invoke ExitProcess, 0
end _start; окончания программы

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


Просмотров: 13687

Вернуться воглавление




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.