Три байтовые переменные A, B, и C содержат целые значения. Упорядочить эти значения по возрастанию так, чтобы A содержала минимальное значение, а С - максимальное.
Задан байтовый массив из N элементов в неупакованном BCD формате. Написать процедуру преобразования исходного массива
Задан байтовый массив из N элементов. Написать процедуру, отыскивающую: номер максимального и минимального элементов, а также разность между максимальным и минимальным элементами.
Написать процедуру нормализации значения, содержащегося в AX. Нормализация заключается в сдвиге содержимого AX влево до тех пор, пока старший из битов, имеющих значение 1, не попадет в 15-й разряд. Если же сразу (AX)=0 или 15-й разряд содержит 1, то процедура не должна выполняться. При выходе из процедуры регистр BX должен содержать число, равное количеству выполненных сдвигов.
Считая содержимое регистров DX:AX 32-битной величиной, написать программу, загружающую в регистр DL номер самого младшего бита, содержащего 1.
Индивидуальное задание: определить размер файла из DTA.
1. Блок-схема к заданию 1
2. ASM 1
mes macro msg
mov ah,9
lea dx,msg
int 21h
endm
abc macro char
add char,'0'
mov dl,char
mov ah,2
int 21h
sub char,'0'
endm
d_seg segment
a db 5
b db 9
c db 3
str db 'Ishodnie dannie:',10,13,'$'
str2 db 'Resultat sortirovki po vozrastaniyu',10,13,'$'
str3 db 'Press any key.........$'
enter db 10,13,'$'
space db ' ','$'
strA db 'A=','$'
strB db 'B=','$'
strC db 'C=','$'
d_seg ends
c_seg segment
assume ds:d_seg,cs:c_seg
start:mov ax,d_seg
mov ds,ax
mes enter
mes str
mes enter
mes strA
abc a
mes space
mes strB
abc b
mes space
mes strC
abc c
mes enter
mov al,a
mov bl,b
mov cl,c
cmp al,bl
jl continue
xchg al,bl
continue:
cmp al,cl
jl continue2
xchg al,cl
continue2:
cmp bl,cl
jl continue3
xchg bl,cl
continue3:
mov a,al
mov b,bl
mov c,cl
mes enter
mes str2
mes enter
mes strA
abc a
mes space
mes strB
abc b
mes space
mes strC
abc c
mes enter
mes enter
mes str3
mov ah,1
int 21h
mov ah,4ch
int 21h
c_seg ends
end start
3. Блок-схема к заданию 2
4. ASM 2
mes macro msg
mov ah,9
lea dx,msg
int 21h
endm
dseg segment
k dw 10
mdb10
masdb1,3,6,8,9,1,4,7,2,3,7,9,4,5,8,9
str db 'Ishodnii massiv elementov v neupakovannom BCD formate:',10,13,'$'
str1 db 10,13,'Poluchenii massiv elementov v ypakovannom BCD formate:',10,13,'$'
str2 db 10,13,'Press any key.........',10,13,'$'
enter db 10,13,'$'
space db ' $'
dseg ends
cseg segment
assume cs:cseg, ds:dseg
vivod proc
xor cx,cx
k_del:
mov dx,0
div k
add dx,'0'
push dx
inc cx
cmp ax,0
jne k_del
k3:
pop dx
mov ah,2
int 21h
loop k3
ret
vivod endp
abcproc
xorsi,si
xordi,di
movbx,16
movcx,16
decbx
m2:
moval,mas[si]
mulm
incsi
addal,mas[si]
movmas[di],al
cmpsi,bx
jem1
incdi
incsi
loop m2
m1:
ret
abcendp
start:
movax,dseg
movds,ax
mes enter
mes str
mes enter
mov bx, 0
met2: mov al, mas[bx]
mov ah,0
call vivod
mes space
inc bx
cmp bx,15
jle met2
call abc
mes enter
mes str1
mes enter
mov bx, 0
met1: mov al, mas[bx]
mov ah,0
call vivod
mes space
inc bx
cmp bx,7
jle met1
mes enter
mes str2
mov ah,1
int 21h
movah, 4ch
int21h
cseg ends
end start
5. Блок-схема к заданию 3
6. ASM 3
char1 macro b
add b,'0'
mov dl,b
mov ah,2
int 21h
sub b, '0'
endm
char macro a
xor dx, dx
mov ax, a
mov bx, 10
div bx
add dl,'0'
mov ah, 2
int 21h
endm
mes macro str
mov ah,9
lea dx,str
int 21h
endm
d_seg segment
mindb0
maxdb0
n_mindw1
n_maxdw1
razdb0
adb2,6,4,1,7,9,3
n=$-a
enter db 10,13,'$'
str db 10,13,'Ishodnii massiv: $'
str1 db 10,13,'Resultat: $'
str2 db 10,13,'Number min chisla: $'
str3 db 10,13,'Number max chisla: $'
str4 db 10,13,'Raznost mezhdu max i min chislami: $'
if (s=='p') {setfillstyle(SOLID_FILL,0); floodfill(getmaxx()/2,getmaxy()/2,8); goto m1;}
if (s!='m') goto m;
cleardevice();
i=15;
setcolor(i);
setfillstyle(SOLID_FILL,i);
floodfill(x,y,i);
settextstyle(0,0,2);
setcolor(RED);
outtextxy(150,30,"MENU");
settextstyle(0,0,1);
setcolor(2);
outtextxy(20,100,"Zadanie po assembleru #1");
setcolor(3);
outtextxy(20,135,"Zadanie po assembleru #2");
setcolor(4);
outtextxy(20,170,"Zadanie po assembleru #3");
setcolor(5);
outtextxy(20,205,"Zadanie po assembleru #4");
setcolor(6);
outtextxy(20,240,"Zadanie po assembleru #5");
setcolor(0);
outtextxy(20,275,"Zadanie po assembleru #6");
setcolor(8);
outtextxy(20,310,"Zadanie po programmirovaniu");
setcolor(9);
outtextxy(20,345,"Back to previos display");
setcolor(12);
outtextxy(20,380,"Exit");
ki=1; x1=14; y1=95; x2=250; y2=115;
rectangle(x1,y1,x2,y2);
sled:
key=bioskey(0);
switch(key)
{
case 18432:{setcolor(15);
rectangle(x1,y1,x2,y2);
if (y1==95) {y1=375;y2=395; ki=9;}
else {y1=y1-35; y2=y2-35; ki--;}
setcolor(RED);
rectangle(x1,y1,x2,y2);
break; }
case 20480:
{setcolor(15);
rectangle(x1,y1,x2,y2);
if (y1==375) {y1=95;y2=115; ki=1;}
else {y1=y1+35; y2=y2+35; ki++;}
setcolor(RED);
rectangle(x1,y1,x2,y2);
break; }
case 7181: switch(ki)
{ case 1: spawnl(P_WAIT, "1.EXE", NULL); break;
case 2: spawnl(P_WAIT, "2.EXE", NULL); break;
case 3: spawnl(P_WAIT, "3.EXE", NULL); break;
case 4: spawnl(P_WAIT, "4.EXE", NULL); break;
case 5: spawnl(P_WAIT, "5.EXE", NULL); break;
case 6: spawnl(P_WAIT, "6.EXE", NULL); break;
case 7: spawnl(P_WAIT, "CPP.EXE", NULL); break;
case 8: goto snachala;
case 9: closegraph(); exit(1); }
}
goto sled;
}
14. Руководство пользователя
Для запуска курсовой работы воспользуйтесь файлом KOMP.EXE.В случае возникновения ошибки «Error initialization» убедитесь, что в папке с приложением также есть файл графического драйвера egavga.bgi и его путь в программе указан правильно.
Для нормального функционирования курсовой работы необходимо наличие в папке следующих файлов:
KOMP.EXE
1.EXE
2.EXE
3.EXE
4.EXE
5.EXE
6.EXE
EGAVGA.BGI
TRIP.CHR
SANS.CHR
LITT.CHR
INPUT.ASM
Любой файл размером < 1 мегабайта (потребуется для индивидуального задания)
При запуске приложения отображается графическая заставка, сопровождаемая мелодией и анимацией, а также содержащая информацию об авторе.
Нажмите “M” для отображения меню курсовой работы. Выход производится с помощью клавиши Esc. При нажатии любой другой клавиши останавливается мелодия и анимация.
Для запуска задания, наведите курсор на задание которое вам нужно и нажмите Enter. Запускается программа из курсовой работы, после выхода из неё, программа автоматически перейдёт в меню
В индивидуальном задании потребуется ввести имя файла, после чего нажать ENTER.
Курсовая работа тестировалась на операционных системах MS DOS и Microsoft Windows 95/2000/XP, для запуска на операционных системах Windows более высокой версии потребуется специальное программное обеспечение.
Список литературы
1. Калашников О. «Ассемблер? Это просто!»
2. Питер Абель. Ассемблер и программирование для IBM PC
3. Курс лекций по предмету «Информатика»
4. Методические указания к выполнению лабораторных работ по предмету «Информатика»
5. Крупник А. - Ассемблер Самоучитель
6. Крупник А. - Изучаем ассемблер
7. Митницкий В. - Архитектура IBM PC и язык Ассемблера
8. Голубь Н. - Искусство программирования на Ассемблере