Скачиваний:
12
Добавлен:
04.11.2020
Размер:
360.66 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра вычислительной техники

ОТЧЕТ по лабораторной работе №1

по дисциплине «Организация ЭВМ и систем» Тема: «Изучение арифметических команд»

Студентка гр. 6361

Чемякина Д.С.

Преподаватель

Манирагена В.

Санкт-Петербург

2017

Цель работы.

Изучить систему команд арифметических операций процессоров семейства 86х80.

Экспериментальные результаты.

Адрес

Мнемокод

Двоичный код

Изменения

Комментарий

 

 

1:10100001 (опер.

регистров

Правильное

 

 

 

00B1

MOV AX, [0029]

присваивания)

AХ=100

исполнение

 

 

2:00101001 (рег. АХ)

 

 

 

 

3:00

 

 

00B4

ADD AX, [002B]

1:00000011 (опер.

АL=B0

Правильное

 

 

сложения)

 

исполнение

 

 

2:00000110 (рег. АХ и

 

 

 

 

адрес)

 

 

 

 

3 и 4: адрес

 

 

00B8

SUB AX,[002F]

1:00101011 (опер.

AL=9C

Правильное

 

 

вычитания)

P=1

исполнение

 

 

2:00101111 (рег. АХ и

 

 

 

 

адрес)

 

 

00BC

MOV BX,[002D]

1:10001011(опер.

BL = 41

Правильное

 

 

присваивания)

 

исполнение

 

 

2:00011110 (рег. ВХ и

 

 

 

 

адрес)

 

 

00C0

MUL BX

1:11110111 (опер.

АX = 279C

Правильное

 

 

умножения)

 

исполнение

 

 

2:11100011 (рег. ВХ)

 

 

00C2

CMP DX, 00

1:10000011 (опер.

Z=1

Правильное

 

 

сравнения)

 

исполнение

 

 

2:11111010 (рег. DХ)

 

 

00C5

JA 00CA

1:01110111 (опер.

 

Правильное

 

 

условного перехода)

 

исполнение

 

 

2:00000011 (адрес

 

 

 

 

метки)

 

 

00C7

JMP 00E4

1:11101011 (опер.

AX = 279CH

Правильное

 

 

безусловного

 

исполнение

 

 

перехода)

 

 

 

 

2:00011011 (адрес

 

 

 

 

метки)

 

 

00E4

CALL 0054

1:11101000(опер.

 

Корректный вызов

 

 

Вызова

 

подпрограммы

 

 

подпрограммы)

 

 

 

 

2:01101101 (адрес

 

 

 

 

подпрограммы)

 

 

00EA

MOV AX,4C00

1:10111000 (опер.

AX = 4C00

Правильное

 

 

присваивания)

исполнение

 

 

3:01001100 (рег. АХ)

 

00ED

INT 21H

1:11001101 (опер.

Правильное

 

 

прерывания)

исполнение

 

 

2:00100001 (число 21)

 

Взаимодействие с пользователем.

После запуска программа последовательно просит ввести 4 числа, с которыми будут произведены расчеты по заданной формуле (рис. 1, 2).

Рис. 1 Далее на экран выводится результат вычисления (рис. 3).

Вывод.

В ходе выполнения лабораторной работы была реализована программа, которая просит ввести с клавиатуры четыре числа и производит арифметические действия с этими числами согласно заданной формуле. Результат вычислений выводится на экран.

Приложение 1. Исходный код.

TITLE LAB1

.Model Small

.STACK 100h

.Data

message1 db 'Enter a: ','$' message2 db 'Enter b: ','$' message3 db 'Enter c: ','$' message4 db 'Enter d: ','$' mNull db '0','$'

m2Null db '00','$' message5 db 'Result: ','$'

formula db 'Var 4: (A+B-D)*C',10, '$'

a dw ? b dw ? c dw ? d dw ?

prov1 db ? prov2 db ? buff db ?

error db 'ERROR $'

.Code

input proc mov ah,0Ah xor di,di

lea dx, [buff] mov [buff], 6 int 21h

mov dl,0Ah mov ah,02 int 21h xor ax,ax mov bx,10

lea si,[buff+2]

metka_2:

mov cl, [si] cmp cl, 0Dh jz endin

cmp cl, '-' jz mt

cmp cl,'0' jb er

cmp cl, '9' ja er

sub cl,'0'

mul bx add ax,cx inc si

jmp metka_2 mt:

mov di,1 inc si

jmp metka_2

er:

lea dx, error mov ah, 09 int 21h

int 20h

endin: cmp di, 1 jz ng

ret

ng: neg ax ret

input endp

output proc xor cx,cx mov bx,10

metka_1: xor dx,dx div bx push dx inc cx test ax,ax

jnz metka_1

mov ah, 02h

loop1: pop dx add dl,'0' int 21h loop loop1

ret output endp

begin:

mov ax, @data mov ds, ax

lea dx, formula mov ah, 09

int 21h

lea dx, message1 mov ah, 09

int 21h call input mov [a],ax

lea dx, message2 mov ah,09

int 21h call input mov [b],ax

lea dx, message3 mov ah,09

int 21h call input mov [c],ax

lea dx, message4 mov ah,09

int 21h call input mov [d],ax

push ax push dx

lea dx, message5 mov ah, 09

int 21h pop dx pop ax

mov [prov1], 0 mov [prov2], 0

mov ax,[a] add ax,[b] sub ax,[d] mov bx,[c] mul bx

cmp dx, 0h ja bol jmp mal

bol:

mov bx,1000 div bx

mov [a], dx ;сохраняет остаток call output ;выводит частное

mov dx,[a] ;для проверки остатка cmp dx,10

jb ch2 cmp dx,100 jb ch1

mal:

call output jmp end1

end1:

mov ax, 4c00h int 21h

ch1:

mov [a],dx lea dx,mNull mov ah,09 int 21h

mov ax,[a] call output jmp end1

ch2:

mov [a],dx lea dx,m2Null mov ah,09 int 21h

mov ax,[a] call output jmp end1

END begin

Соседние файлы в папке Всякие лабы