ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Красноярский Государственный Технический Университет
Лабораторная работа по ЦУиМП №1
ИЗУЧЕНИЕ СТАНДАРТНЫХ ФУНКЦИЙ ПРЕРЫВАНИЯ DOS
выполнил:
студент гр. Р53-4 : Титов Д. С.
проверил:
Тронин О.А.
Цель работы
Знакомство со стандартными функциями прерывания DOS, вывод информации на дисплей, ввод данных с клавиатуры и запись в фаил.
Ход работы
Задание (Вариант № 13) Сформировать массив из 10 двухбайтных чисел. Найти номер максимального числа.
Блок-схема программы:
Программа
model small
.stack 100h
.data
soob db "vvedite shesnadsaterichnoe chislo bolshimi bykvami $"
s1 db " $"
a1 db 0,0,0,0
b1 db 0,0,0,0
c1 dw 0,0,0,0
summ dw 0,0,0,0,0,0,0,0,0,0
adr_a1 dw 0
adr_b1 dw 0
adr_c1 dw 0
adr_summ dw 0
m dw 0
n dw '$',0,'$'
qw dw 0
rt dw 0
.code
.startup
mov dx,offset soob
mov ah,9
int 21h
lea bx,a1
mov adr_a1,bx
lea bx,b1
mov adr_b1,bx
lea bx,c1
mov adr_c1,bx
lea bx,summ
mov adr_summ,bx
mov ax,10
mov rt,ax
NACH:
xor si,si
mov cx,4
M1:
mov ah,1
int 21h
mov bx,adr_a1
mov [bx+si],al
inc si
loop M1
xor si,si
mov cx,4
M2:
mov bx,adr_a1
mov dl,[bx+si]
cmp dl,39h
jbe MM1
sub dl,7h
MM1:
sub dl,30h
mov bx,adr_b1
mov [bx+si],dl
inc si
loop M2
xor ax,ax
mov bx,adr_b1
mov al,[bx]
shl ax,12
mov bx,adr_c1
mov [bx],ax
xor ax,ax
mov bx,adr_b1
mov al,[bx+1]
shl ax,8
mov bx,adr_c1
mov [bx+2],ax
xor ax,ax
mov bx,adr_b1
mov al,[bx+2]
shl ax,4
mov bx,adr_c1
mov [bx+4],ax
xor ax,ax
mov bx,adr_b1
mov al,[bx+3]
mov bx,adr_c1
mov [bx+6],ax
xor ax,ax
mov cx,4
xor si,si
M3:
mov bx,adr_c1
add ax,[bx+si]
add si,2
loop M3
mov di,qw
mov bx,adr_summ
mov [bx+di],ax
add di,2
mov qw,di
mov dx,rt
dec dx
mov rt,dx
cmp dx,0
je MTK0
xor ax,ax
mov dx,offset s1
mov ah,9
int 21h
jmp NACH
MTK0:
mov bx,adr_summ
mov dx,[bx]
mov m,dx
mov cx,10
xor si,si
mov dx,0
mov n,dx
MTK1:
mov bx,adr_summ
mov dx,m
mov ax,[bx+si]
cmp dx,ax
jb MTK2
jmp MTK3
MTK2:
mov dx,[bx+si]
mov m,dx
mov n,si
MTK3:
add si,2
loop MTK1
mov dx,n
shr dx,1
mov n,dx
xor ax,ax
mov dx,offset s1
mov ah,9
int 21h
mov bx,n
add bx,30h
mov n,bx
xor ax,ax
mov dx,offset n
mov ah,9
int 21h
.exit 0
end
Задание (Вариант № 3) Сформировать массив из 10 двухбайтных чисел. Переписать во второй массив все нечетные числа.
Блок-схема программы:
Программа
model small
.stack 100h
.data
mass_2 dw 0,0,0,0,0,0,0,0,0,0
s1 db " $"
x1 db 0,0,0,0
y1 db 0,0,0,0
rt2 dw 0
qw2 dw 0
zx2 dw 0
bv2 dw 0
itog1 dw 0,0,0,0,0,0,0,0,0,0
itog2 dw '$',0,'$',0,'$',0,'$',0,'$',0,'$',0,'$',0,'$',0,'$',0,'$',0,'$'
adr_mass_2 dw 0
adr_x1 dw 0
adr_y1 dw 0
adr_itog1 dw 0
adr_itog2 dw 0
soob db "vvedite shesnadsaterichnoe chislo bolshimi bykvami $"
a1 db 0,0,0,0
b1 db 0,0,0,0
c1 dw 0,0,0,0
summ dw 0,0,0,0,0,0,0,0,0,0
adr_a1 dw 0
adr_b1 dw 0
adr_c1 dw 0
adr_summ dw 0
qw dw 0
rt dw 0
.code
.startup
mov dx,offset soob
mov ah,9
int 21h
lea bx,a1
mov adr_a1,bx
lea bx,b1
mov adr_b1,bx
lea bx,c1
mov adr_c1,bx
lea bx,summ
mov adr_summ,bx
mov ax,10
mov rt,ax
NACH:
xor si,si
mov cx,4
M1:
mov ah,1
int 21h
mov bx,adr_a1
mov [bx+si],al
inc si
loop M1
xor si,si
mov cx,4
M2:
mov bx,adr_a1
mov dl,[bx+si]
cmp dl,39h
jbe MM1
sub dl,7h
MM1:
sub dl,30h
mov bx,adr_b1
mov [bx+si],dl
inc si
loop M2
xor ax,ax
mov bx,adr_b1
mov al,[bx]
shl ax,12
mov bx,adr_c1
mov [bx],ax
xor ax,ax
mov bx,adr_b1
mov al,[bx+1]
shl ax,8
mov bx,adr_c1
mov [bx+2],ax
xor ax,ax
mov bx,adr_b1
mov al,[bx+2]
shl ax,4
mov bx,adr_c1
mov [bx+4],ax
xor ax,ax
mov bx,adr_b1
mov al,[bx+3]
mov bx,adr_c1
mov [bx+6],ax
xor ax,ax
mov cx,4
xor si,si
M3:
mov bx,adr_c1
add ax,[bx+si]
add si,2
loop M3
mov di,qw
mov bx,adr_summ
mov [bx+di],ax
add di,2
mov qw,di
mov dx,rt
dec dx
mov rt,dx
cmp dx,0
je MTK0
xor ax,ax
mov dx,offset s1
mov ah,9
int 21h
jmp NACH
MTK0:
lea bx,summ
lea di,mass_2
mov cx,10
xor si,si
xor bp,bp
MK1:
clc
mov ax,[bx+si]
shr ax,1 !
jc MK2
jmp MK3
MK2:
mov dx,[bx+si]
mov [di+bp],dx
add bp,2
MK3:
add si,2
loop MK1
lea bx,x1
mov adr_x1,bx
lea bx,y1
mov adr_y1,bx
lea bx,mass_2
mov adr_mass_2,bx
xor ax,ax
mov dx,offset s1
mov ah,9
int 21h
int 21h
int 21h
int 21h
mov ax,0
mov qw2,ax
mov zx2,ax
mov ax,10
mov rt2,ax
P_NACH:
mov di,qw2
xor ax,ax
mov bx,adr_mass_2
mov al,[bx+di]
shr ax,4
mov bx,adr_x1
mov [bx],al
xor ax,ax
mov bx,adr_mass_2
mov al,[bx+di]
and al,00001111b
mov bx,adr_x1
mov [bx+1],al
xor ax,ax
mov bx,adr_mass_2
mov al,[bx+1+di]
shr ax,4
mov bx,adr_x1
mov [bx+2],al
xor ax,ax
mov bx,adr_mass_2
mov al,[bx+1+di]
and al,00001111b
mov bx,adr_x1
mov [bx+3],al
mov cx,4
xor si,si
M11:
xor ax,ax
mov bx,adr_x1
mov al,[bx+si]
cmp al,9
jbe M22
add al,7h
M22:
add al,30h
mov bx,adr_y1
mov [bx+si],al
inc si
loop M11
lea bx,itog1
mov adr_itog1,bx
lea bx,itog2
mov adr_itog2,bx
mov di,qw2
add di,2
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.