Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба два

.doc
Скачиваний:
19
Добавлен:
02.04.2015
Размер:
45.57 Кб
Скачать

Министерство образования и науки Российской Федерации

Волжский политехнический институт (филиал) федерального государственного бюджетного образовательного учреждения высшего профессионального образования «Волгоградский государственный технический университет»

(ВПИ (филиал) ВолгГТУ)

Вечерний факультет

Ф

Информатика и технология программирования

акультет «_________________________________________________________»

Кафедра «___________________________________________________________»

ЛАБОРАТОРНАЯ РАБОТА №2

Машинно-зависимые языки

по дисциплине «_____________________________________________________»

Программирование условий и циклов на языке ассемблера

на тему______________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

Смородин Владимир Александрович

Студент_____________________________________________________________

(

имя, отчество, фамилия)

Группа________________________

Оценка ________________________

(зачтено/незачтено)

ст. преп. Макушкина Л.А.

Проверил ________________________ _____________________

(подпись и дата подписания) (долж., инициалы и фамилия)

Волжский, 2014 г.

Цель работы: изучение команд условной и безусловной передачи управления. Приобретение навыков написания программ с условиями и циклами на языке ассемблера.

Вариант №10.

Задача 1.

В соответствии с вариантом напишите программу на языке ассемблера с полным описанием сегментов для вычисления значения y. Используйте, где требуется, 32х-разрядные регистры.

10

; ; .

Исходный текст программы

.model small

.stack 100h

.data

x db 0

a db 0

y1 dw ?

y2 dw ?

x3 db 3

y dw ?

ySmall db 0

message1 db 13,10,"Введите x: $"

message2 db 13,10,"Введите a: $"

message3 db 13,10,'y = $'

flag db 0

.code

start:

mov ax,@data

mov ds,ax

mov ah,9h

lea dx,message1

int 21h

mov ah,1

int 21h

cmp al,'-'

jne AfterPress

mov flag,1

input:

mov ah,1

int 21h

AfterPress:

cmp al,13

je endInput

sub al,30h

mov bl,al

mov bh,10

mov al,x

xor ah,ah

mul bh

add al,bl

mov x,al

loop input

endInput:

cmp flag,1

jne BeforeInput2

neg x

BeforeInput2:

mov flag,0

mov ah,9h

lea dx,message2

int 21h

mov ah,1

int 21h

cmp al,'-'

jne AfterPress2

mov flag,1

input2:

mov ah,1

int 21h

AfterPress2:

cmp al,13

je endInput2

sub al,30h

mov bl,al

mov bh,10

mov al,a

xor ah,ah

mul bh

add al,bl

mov a,al

loop input2

endInput2:

cmp flag,1

jne EndInputXA

neg a

EndInputXA:

xor ah,ah

mov al,x

cmp al,a

jg XadvA

mov al,a

sub al,7

cbw

mov y1,ax

jmp CalculateY2

XadvA:

cmp al,0

jge xa1

neg al

xa1:

add al,a

mov y1,ax

CalculateY2:

mov al,a

cmp al,3

jg Aadv3

mov ax,11

mov y2,ax

jmp CalculateY

Aadv3:

imul x3

mov y2,ax

CalculateY:

mov ax,y1

sub ax,y2

mov y,ax

OutY:

mov ah,9h

lea dx,message3

int 21h

cmp y,0

jge Yge0

mov al,'-'

int 29h

neg y

Yge0:

mov ax,y

mov bl,100

div bl

push ax

add al,'0'

cmp al,'0'

jna outAllY

int 29h

outAllY:

mov al,ah

aam

add ax,'00'

mov dx,ax

push dx

mov al,dh

int 29h

pop dx

mov al,dl

int 29h

mov ah,10h

int 16h

mov ax,4c00h

int 21h

end start

5

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