лаба два
.docМинистерство образования и науки Российской Федерации
Волжский политехнический институт (филиал) федерального государственного бюджетного образовательного учреждения высшего профессионального образования «Волгоградский государственный технический университет»
(ВПИ (филиал) ВолгГТУ)
Вечерний факультет
Ф
Информатика и
технология программирования
Кафедра «___________________________________________________________»
ЛАБОРАТОРНАЯ РАБОТА №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