Разработка мк

Автор работы: Пользователь скрыл имя, 24 Сентября 2013 в 09:56, контрольная работа

Краткое описание

Задание: Разработать программы для ОВЭМ МК51 на языке ASM51 и C51 выполняющие обработку массива чисел, хранящихся во внешнем ОЗУ.
Разрядность данных – 8 бит.
Обозначения: avg – среднее,min – минимальное.
Алгоритм 3*avg – 2*min , размер массива 400.
Код программы на ASM51:

Содержание

1. Код программы на ASM51..........................................................................................3
2. Код программы на C51................................................................................................6

Прикрепленные файлы: 1 файл

Контрольная работа по МПС.doc

— 211.50 Кб (Скачать документ)


 

Содержание

 

1. Код программы на ASM51..........................................................................................3

2. Код программы на C51................................................................................................6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  Контрольная  работа



Контрольная работа по МПС

Вариант №18

Задание: Разработать  программы для ОВЭМ МК51 на языке ASM51 и C51 выполняющие обработку массива чисел, хранящихся во внешнем ОЗУ.

Разрядность данных – 8 бит.

Обозначения: avg – среднее,min – минимальное.

Алгоритм  3*avg – 2*min ,  размер массива 400.

Код программы на ASM51:

ORG 0000

JMP begin

ORG 0030h

MAX equ R2

MIN equ R3

AVG1 equ R4

AVG2 equ R5

SUM1 equ R6

SUM2 equ R7 

BUF  equ R1

begin:

;Initialization

mov A,#0

mov R0,100

mov R1,4

mov DPTR,#0

mov SUM1,#0

mov SUM2,#0

mov AVG1,#0

mov AVG2,#0

 

;Zapolnenie  

M2:

mov R0,100

M1: 

movx @DPTR,A

inc A

inc DPTR

 

djnz R0,M1

djnz R1,M2

 

; Set MIN , Set max

 

mov DPTR,#0

movx A,@DPTR

mov MIN,A

movx A,@DPTR

mov MAX,A

 

;;;;;;;;;;;;;;;;;;;;;;;;


mov R1,4

M4:

mov R0,100

M3:

 

movx A,@DPTR

; MIN ,8 bit 

mov B,MIN 

cjne A,B,not_equ

jmp end_1

not_equ:

jc less

jmp end_1

less:

mov MIN,A

end_1:

 

; MAX ,8 bit

mov B,MAX

cjne A,B,not_equ1

jmp end_11

not_equ1:

jnc less1

jmp end_11

less1:

mov MAX,A

end_11:

 

;Summa ,16 bit

mov B,A

mov A,SUM1

add A,B

mov SUM1,A

jnc M5

inc SUM2

M5: 

 

inc DPTR

 

djnz R0,M3

djnz R1,M4

 

; AVG = SUM / 400 (100 *4) 

mov R0,4

M6: 

mov B,#100

mov A,SUM2

div AB

mov BUF,B

mov SUM2,A

mov B,#100

mov A,SUM1

div AB

add A,BUF

mov SUM1,A

djnz R0,M6

 

mov A,SUM1

mov AVG1,A

mov A,SUM2

mov AVG2,A

 

; AVG *3  


mov B,#3

mov A,AVG2

mul AB

mov AVG2,A

mov BUF,B

mov B,#3

mov A,AVG1

mul AB

add A,BUF

mov AVG1,A

; MIN * 2 

mov B,MIN

mov A,MIN

add A,B

mov BUF,A

; AVG*3 - MIN *2

mov A,AVG2

subb A,#0

mov A,AVG1

subb A,BUF

 

 

jmp begin

 

end

 

Рисунок 1. Окно программыKeiluVision4, ASM51.


Код программы на C51:

#include <REGX51.H>

 

xdata char mass[400];

 

int main(){

int i = 0;

char value = -128, max = 0 , min = 0 ;

int avg  = 0 ,result ;

for (i = 0 ; i <400; i++)

mass[i] = value++;

min = mass[0];

max = mass[0];

for (i = 0 ; i <400; i++){

avg += mass[i];

if ( min > mass[i] )

min = mass[i];

if ( max < mass[i] )

max = mass[i];

}

avg /= 400;

  result = 3*avg - 2 * min; 

 

return 0 ;

}

 

Рисунок 2. Окно программыKeiluVision4, C51.


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