Програма на с #include #include #include int m[10]={0x3938,0x3538,0x3931,0x3333,0x3137,0x3435,0x3839,0x3337,0x3835,0x3532}; int v[10]



Дата20.08.2017
Размер24.48 Kb.
#28384
ТипПрограма
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


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница