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

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

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

по дисциплине «Организация ЭВМ и систем » Тема: «Условные переходы, циклы, сдвиги»

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

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

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

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

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

2017

Цель работы.

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

младшего из установленных в единицу разрядов в регистре DL (если все нули, то результат — 8) и вывести результат.

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

Адрес

Мнемокод

Двоичный код

Изменения

Комментарий

 

 

 

регистров

 

0073

CALL [0000]

байт 1:

В AL введённое

 

 

 

111010000(опер.

с клавиатуры

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

 

 

вызова

значение

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

 

 

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

 

 

 

 

байт2:10001010 (адрес

 

 

 

 

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

 

 

0076

MOV DH, AL

1:10001010 (опер.

DH=05

Правильное

 

 

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

 

исполнение

 

 

2:11110000 (рег. АН)

 

 

0078

MOV AL, FE

1:10110000 (опер.

Al = FE

Правильное

 

 

присваивания и рег

 

исполнение

 

 

AL)

 

 

007A

MOV BL, 01

1:10110011 (опер.

BL = 01

Правильное

 

 

присваивания и рег.

 

исполнение

 

 

BL)

 

 

007C

MOV CL, 01

1:10110001 (опер.

CL = 00

Правильное

 

 

присваивания и рег.

 

исполнение

 

 

AL)

 

 

007E

CMP CL, 08

1:10000000 (опер.

P = 0

Правильное

 

 

сравнения)

 

исполнение

 

 

2:11111001 (рег. СL)

 

 

0081

JE 0096

1:11101000 (опер.

 

Правильное

 

 

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

 

исполнение

 

 

2:00010011 (адрес

 

 

 

 

метки)

 

 

0083

MOV DL, DH

1:10001010 (опер.

DL = 00

Правильное

 

 

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

DL = 05

исполнение

 

 

2: 11010110

 

 

0085

OR DL, AL

1: 00001010 (опер.

DL = 05

Логическое «ИЛИ»

 

 

логическое «ИЛИ»)

DL = FF

для содержимого

 

 

2: 11010000

C = 0

регистров DL и AL

0087

AND DL, BL

1:22 00100010

DL = FF

 

 

2:D3 11010011

DL = 01

0089

CMP DL, 00

1:80 10000000

 

 

 

2:FA11111010

 

 

 

3:00

 

008C

JNE [0096]

1:75 11101001

 

 

 

2:08

 

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

После запуска программа просит ввести число (рис. 1).

Рис. 1 Далее программа выводит на экран номер первой единицы в двоичном

представлении введенного числа (рис. 2).

Рис. 2

Вывод.

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

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

TITLE LAB2

.Model Small

.STACK 100h

.Data

message1 db 'Enter number: ','$' message2 db 'Result: ','$'

a db ? b 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, message1 mov ah, 09

int 21h

call input mov dh,al mov al,254 mov bl,1 mov cl,0

metka: cmp cl,8 jz goOut mov dl,dh OR dl,al AND dl,bl cmp dl,0

jnz goOut inc cl

ROL al,1 ROL bl,1 jmp metka

goOut: push dx push ax

lea dx, message2 mov ah, 09

int 21h pop ax pop dx

mov al,cl call output

mov ax, 4c00h int 21h

end begin

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