1.Задание
53. Даден е масив от 10 двубайтови BCD числа без знак. Да се състави програма, която преврежда четните числа в началото, а нечетните числа в края на масива.
Числата в BCD код са двоично кодирани десетични числа, което значи, че всяка десетична цифра се преобразува в съответното и двоично число.
За реализацията на горното задание се използва програма на С, в която се извеждат резултатите от изчисленията. В нея се извиква асемблерна подпрограма чрез инструкцията Sort(FP_OFF(m),FP_OFF(v)); в която се извършва разпознаването на четните от нечетните числа. То става посредством деление на 2 и изследване на остатъка от делението. Ако той е единица то значи числото е нечетно За брояч на четните числа се използва регистър СХ,а за брояч на нечетните числа се използва DX, Като СХ и DX се записват накрая в променливи, чийто адрес (отместване) се задава като параметър на асемблерната функция.
CX
BP
DX
#include
#include
#include
int m[10]={0x3938,0x3538,0x3931,0x3333,0x3137,0x3435,0x3839,0x3337,0x3835,0x3532};
int v[10];
extern void Sort(int mp, int vp);
int Bcd2Hex(int b)
{ int t;
t=(b & 15)+(b>>8 & 15)*10;
return t;
}
void main()
{
int i;
clrscr();
Sort(FP_OFF(m),FP_OFF(v));
printf("\nThe numbers in BCD code are:");
for(i=0;i<10;i++) printf("\nM[%d]=%6X",i,m[i]);
printf("\n\nThe sorted numbers in decimal code are:");
for(i=0;i<10;i++) printf("\nV[%d]=%d",i,Bcd2Hex(v[i]));
getch();
}
_TEXT SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:_TEXT
PUBLIC _Sort
_Sort PROC NEAR mp:WORD , vp:WORD
push bp
mov bp,sp
mov ax,ds
mov es,ax
mov si,mp
mov di,vp
xor bp,bp
mov cx,0
mov dx,18
L1: mov ax,[bp+si]
push dx cx ax
mov cx,2
xor dx,dx
div cx
cmp dx,0
pop ax cx dx
jne Lnechet
Lchet: mov bx,bp
mov bp,cx
mov [bp+di],ax
add cx,2
mov bp,bx
jmp Lnext
Lnechet: mov bx,bp
mov bp,dx
mov [bp+di],ax
sub dx,2
mov bp,bx
Lnext: add bp,2
cmp bp,20
jb L1
pop bp
ret
_Sort ENDP
_TEXT ENDS
ТЕХНИЧЕСКИ УНИВЕРСИТЕТ
СОФИЯ
КУРСОВ ПРОЕКТ
дисциплина:
ПСЕ
Проверил: Доц.Наков разработила:Ирина Станчева
Фак: ФКСУ спец.Информационни Технологи Гр.67 фN1301989
Сподели с приятели: |