Скачиваний:
11
Добавлен:
09.05.2014
Размер:
75.26 Кб
Скачать

Лабораторная Работа №2

Основы программирования на языке Ассемблер”

Работу выполнил:

студент гр. 2100

Голубцов Евгений

Работу принял:

Лукьянов Н.

2009 года

Задание:

Написать программу на языке Ассемблер, обрабатывающую одномерный массив данных. Инициализировать массив путем перечисления элементов - 8 чисел.

Программа должна выводить на экран порядковый номер элемента массива, его значение и текст, сравнивающий элемент с нулем. В случае, если элемент не равен 0, вывести соответствующую строку “не =0”, если элемент равен 0, то вывести строку “=0”.

После вывода массива на экран сделать паузу в программе для анализа результатов.

Проанализировать работу программы в отладчике.

1 Цель работы

Продолжить ознакомление с синтаксисом языка Assembler. Получить навыки работы с одномерными массивами и научиться выводить сообщения на экран. Ознакомиться с командами переходов.

2 Блок-схема алгоритма

3 Текст программы с комментариями

.model small

.stack 256

.data

mes1 db " ne raven 0 =$",0ah,0dh

mes2 db " raven =$",0ah,0dh;

mes3 db 0ah,0dh,'Element $'

mas dw 4,0,6,0,2,0,7,0;

.code

.486

main:

mov ax,@data

mov ds,ax

xor ax,ax

mov cx,8

mov esi,0

compare:

mov dx,mas[esi*2]

cmp dx,0

je equal

mov ah,09h

lea dx,mes3

int 21h

mov ah,02h

mov dx,si

add dl,30h

int 21h

mov ah,09h

lea dx,mes1

int 21h

mov ah,02h

mov dx,mas[esi*2]

add dl,30h

int 21h

inc esi

dec cx

jcxz exit

jmp compare

equal:

mov ah,09h

lea dx,mes3

int 21h

mov ah,02h

mov dx,si

add dl,30h

int 21h

mov ah,09h

lea dx,mes2

int 21h

mov ah,02h

mov dx,mas[esi*2]

add dl,30h

int 21h

inc esi

dec cx

jcxz exit

jmp compare

exit:

mov ax,4c00h

int 21h

end main

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

5 Описание основных команд, использованных в программе

CMP – сравнение двух операндов. Команда реализуется как вычитание операнда-источника из операнда-приемника, но результат не сохраняется в приемнике, а лишь оказывает влияние на арифметические флаги.

JMP – команда передает управление другой команде по заданному адресу перехода.

JE/JNE - передает управление другой команде по заданному адресу в зависимости от состояния бита ZF в регистре флагов (равен 0 или не равен 0).

MOV – пересылка данных. Команда передает значение операнда-источника в операнд-приемник.

6 Выводы по работе программы

На основе полученных результатов, видно что программа работает правильно. Программа была протестированна на различных результатах (массив без нулевых элементов, массив с одними нулями и другие) и не единого сбоя результата программы не было. Из чего следует, что алгоритм нашей программы верен.

Соседние файлы в папке asm lab # 2