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

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

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

Выполнил: студент группы 2100 Митрофанов А.С.

Март 2009 года

1 Цель работы

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

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

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

; lab2.doc

.model small

.stack 256

.data

mes_el db 0ah,0dh,'element with index=$'

mes_eq db " is equal to 0$",0ah,0dh

mes_neq db " is not equal to 0$",0ah,0dh

mes_val db ' and value=$'

mas dw 5,7,0,3,0,1,4,0

.code

.486

main:

mov ax,@data

mov ds,ax; связка ds с сегментом данных

xor ax,ax; обнуление ax

prepare:

mov cx,8; счетчик цокла

mov esi,0; индекс начального элемента массива

compare:

mov dx,mas[esi*2]

cmp dx,0; сравнение текущего элемента с 0

je equal; переход если =0

not_equal:

mov ah,09h; вывод mes_el

lea dx,mes_el

int 21h

mov ah,02h; вывод номера элемента

mov dx,si

add dl,30h

int 21h

mov ah,09h; вывод mes_val

lea dx,mes_val

int 21h

mov ah,02h; вывод значения элемента

mov dx,mas[esi*2]

add dl,30h

int 21h

mov ah,09h; вывод mes_neq

lea dx,mes_neq

int 21h

inc esi; следущий элемент

dec cx

jcxz exit; если cx=0 то выходим

jmp compare

equal:

mov ah,09h; вывод mes_el

lea dx,mes_el

int 21h

mov ah,02h; вывод номера элемента

mov dx,si

add dl,30h

int 21h

mov ah,09h; вывод mes_val

lea dx,mes_val

int 21h

mov ah,02h; вывод значения элемента

mov dx,mas[esi*2]

add dl, 30h

int 21h

mov ah,09h; вывод mes_eq

lea dx,mes_eq

int 21h

inc esi; следущий элемент

dec cx

jcxz exit; если cx=0 то выходим

jmp compare

exit:

mov ah,0h; выход только по esc

int 16h

cmp ah,1

jne exit

mov ax,4c00h

int 21h

end main

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

element with index=0 and value=5 is not equal to 0

element with index=1 and value=7 is not equal to 0

element with index=2 and value=0 is equal to 0

element with index=3 and value=3 is not equal to 0

element with index=4 and value=0 is equal to 0

element with index=5 and value=1 is not equal to 0

element with index=6 and value=4 is not equal to 0

element with index=7 and value=0 is equal to 0

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

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

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

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

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

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

На основе результата работы программы, можно сделать вывод, что она работает правильно.

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