Формирование массива из 10 двухбайтных чисел, найти номер максимального числа

Страницы работы

Содержание работы

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Красноярский Государственный Технический Университет

Лабораторная работа по ЦУиМП №1

ИЗУЧЕНИЕ СТАНДАРТНЫХ ФУНКЦИЙ ПРЕРЫВАНИЯ DOS

выполнил:

студент гр. Р53-4 : Титов Д. С.

проверил:

Тронин О.А.

Красноярск 2006

Цель работы

Знакомство со стандартными функциями прерывания 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

Похожие материалы

Информация о работе