Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет 2,3,4.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
31.19 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

Уфимский государственный авиационный технический университет

Кафедра вычислительной математики и кибернетики

ОТЧЕТ

По выполнению лабораторной работы

По дисциплине

«Основы микропрограммирования»

Лабораторная работа №2 «Программирование арифметических операций»

Лабораторная работа №3 «Работа со строками»

Лабораторная работа №4 «Написание собственного обработчика прерывания»

Выполнили:

Студенты группы ПРО-201

Султанов Р. А.

Проверила:

Нургаянова Ольга Сергеева

Уфа – 2012

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

«Программирование арифметических операций»

Цель работы : изучить форматы и правила работы с командами сложения, умножения, вычитания и деления микропроцессоров семейства х86.

Задача: Организовать два массива по 5 элементов каждый. Выполнить поэлементно операции сложения, умножения, вычитания и деления. Каждый раз результат выводить в новый массив.

Реализация:

assume cs:code,ds:data, es:stk

data segment

mas1 dw 5 dup (?)

mas2 dw 5 dup (?)

mas3 dw 5 dup (?)

mes1 db 0ah,0dh,'Massiv(Mul)- ','$'

mes2 db 0ah,0dh,'Massiv(raznost)- ','$'

mes3 db 0ah,0dh,'Massiv(summa)- ','$'

mes4 db 0ah,0dh,'Massiv(delenie)- ','$'

mes5 db 0ah,0dh,'Ishondy massiv 1 - ','$'

mes6 db 0ah,0dh,'Ishondy massiv 2 -','$'

e dw 9h

i dw 1h

tmp db 0

abz dw ' ','$'

data ends

code segment

begin: mov ax,data

mov ds,ax

xor ax,ax

xor bx,bx

MOV CX,5

mov SI,0

go:

mov bx,i

mov mas1[si],bx

mov ax,e

mov mas2[si],ax

inc i

inc e

inc si

inc si

LOOP go

; ВЫВОД ИСХОДНОГО МАССИВА ОДИН

mov ah,09h

lea dx,mes5

int 21h

MOV CX,5

MOV SI,0

ishod1:

mov ax,mas2[si]

mov dl,10

div dl

mov tmp,ah

mov dl,al

add dl,30h

mov ah,02h

int 21h

mov dl,tmp

add dl,30h

mov ah,02h

int 21h

mov ah,09h

lea dx,abz

int 21h

inc si

inc si

loop ishod1

;ВЫВОД ИСХОДНОГО МАССИВА ДВА

mov ah,09h

lea dx,mes5

int 21h

MOV CX,5

MOV SI,0

Ishod2:

mov ax,mas1[si]

mov dl,10

div dl

mov tmp,ah

mov dl,al

add dl,30h

mov ah,02h

int 21h

mov dl,tmp

add dl,30h

mov ah,02h

int 21h

mov ah,09h

lea dx,abz

int 21h

inc si

inc si

loop ishod2

;СЛОЖЕНИЕ

mov SI,0

MOV CX,5

mov ah,09h

lea dx,mes3

int 21h

;САМО СЛОЖЕНИЕ

sum:

mov bx,mas1[si]

mov ax,mas2[si]

add ax,bx

mov mas3[si],ax

inc si

inc si

loop sum

;Вывод сложения

mov si,0

mov cx,5

show_sum:

mov ax,mas3[si]

mov dl,10

div dl

mov tmp,ah

mov dl,al

add dl,30h

mov ah,02h

int 21h

mov dl,tmp

add dl,30h

mov ah,02h

int 21h

inc si

inc si

mov ah,09h

lea dx,abz

int 21h

loop show_sum

;ВЫЧЕТАНИЕ

mov SI,0

mov CX,5

mov ah,09h

lea dx,mes2

int 21h

;НЕПОСРЕДСТВЕННО ВЫЧЕТАНИЕ

subb:

mov bx,mas1[si]

mov ax,mas2[si]

sub ax,bx

mov mas3[si],ax

inc si

inc si

loop subb

;ВЫВОД РАЗНОСТИ

mov si,0

mov cx,5

show_sub:

mov ax,mas3[si]

mov dl,10

div dl

mov tmp,ah

mov dl,al

add dl,30h

mov ah,02h

int 21h

mov dl,tmp

add dl,30h

mov ah,02h

int 21h

inc si

inc si

mov ah,09h

lea dx,abz

int 21h

loop show_sub

;УМНОЖЕНИЕ

mov SI,0

MOV CX,5

mov ah,09h

lea dx,mes1

int 21h

xor dx,dx

mull:

mov bx,mas1[si]

mov ax,mas2[si]

mul bl

mov mas3[si],ax

inc si

inc si

loop mull

;Вывод умножения

mov si,0

mov cx,5

show_mul:

mov ax,mas3[si]

mov dl,10

div dl

mov tmp,ah

mov dl,al

add dl,30h

mov ah,02h

int 21h

mov dl,tmp

add dl,30h

mov ah,02h

int 21h

inc si

inc si

mov ah,09h

lea dx,abz

int 21h

loop show_mul

mov SI,0

MOV CX,5

mov ah,09h

lea dx,mes4

int 21h

xor dx,dx

divv:

mov bx,mas1[si]

mov ax,mas2[si]

div bl

mov dl,al

mov mas3[si],dx

inc si

inc si

loop divv

mov si,0

mov cx,5

show:

mov ax,mas3[si]

mov dl,10

div dl

mov tmp,ah

mov dl,al

add dl,30h

mov ah,02h

int 21h

mov dl,tmp

add dl,30h

mov ah,02h

int 21h

inc si

inc si

mov ah,09h

lea dx,abz

int 21h

loop show

int 21h

mov ax,4c00h

int 21h

code ends

stk segment stack

db 256 dup('*')

stk ends

end begin

Вывод: в данной лабораторной работе, мы научились работать с массивами данных, а так же выполнять простейшие арифметические выражения над ними. При реализации приходилось сталкиваться с многими трудностями, однако данная лабораторная работа в полном объеме позволяет ощутить всю разницу между языками высокого и низкого уровня.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]