
keil
prosím vás viem mi dakto pomoct z príkazmi
od adresy 40h načitajte čísla tak že prve číslo je 0AH posledne čislo bude 0FH zvyšujú sa o 1 urobte ich sucet a ulozte na 30H a priemer ulozte na 31H za kazdu radu dakujem
prosím vás viem mi dakto pomoct z príkazmi
od adresy 40h načitajte čísla tak že prve číslo je 0AH posledne čislo bude 0FH zvyšujú sa o 1 urobte ich sucet a ulozte na 30H a priemer ulozte na 31H za kazdu radu dakujem
Zpět do poradny Odpovědět na původní otázku Nahoru
Urobis si pointer a nacitavas. S cim mas konretne problem?
Inac to zadanie je imho nezmysel, ked mas nacitavat cisla z adresy, tak ti nemoze niekto predpisat jake cisla tam budu. Original to zadanie znelo teda jak presne?
to zadanie je napisane ako som ho ja dostal neviem riadne tie prikazi napisat aby fungoval program
Najprv musis pochopit zadanie. Pochopil si ho? Lebo ja ne. (a urcite to neni text original zadania)
Napisal si teda uz co? deklaroval si si smernik, priradil do neho hodnotu 40, a pouzil ho na citanie bajtov?
ja som ho vobec nepochopil
Tak si najprv pozri text original zadania, a ne skomoleny nezmysel, a potom to naprogramuj. Cely rok si na hodinach robil co?
Zadavatela sa opytas aj jaky datovy typ maju tie "cisla", ak ti povie bajt tak ho upozornis ze len imbecil bude ukladat sucet cisel do bajtu, nasledne si urobis smernik napr. pre bajt bude
unsigned char sucet = 0, pocet = 0;
unsigned char *p;
p=0x40;
while(*p!=0x0A) p++;
while(*p!=0x0F) { p++; sucet += *p; pocet++; }
p=0x30;
*p++ = sucet;
*p = sucet/pocet;
to zadanie je tak napisane ako som ho dostal od ucitelky a pouzivame prikazi MOV ADD atd...
To nie su prikazy ale instrukcie assembleru. Potom ale nepotrebujes ziaden keil (to je prekladac z C jazyka).
Tak si to naprogramuj instrukciami. Priradis si napr. do DPTR registra (ak to ma byt v externej pamati) alebo do akehokolvek registra (napr. R0) hodnotu 40h instrukciou MOV, a intrukciou MOVX si nacitavas bajty trebars do R1, a testujes si R1 a ak uz bolo 0Ah tak priratavas do suctu (sucet bude v registri R2 napriklad). testujes nacitany bajt a skaces podla toho co v nom bolo.
Robit domace ulohy za teba nebudem, studuj instrukce.php
.. pozeram ze na tom webe nie su uvedene instrukcie pre test, test dvoch registrov a skok ak neni rovne je instrujcia CJNE, http://www.keil.com/support/man/docs/is51/is51_cjn e.htm
Napr.
EsteNebolo0A:
MOVX A, @R0
INC R0
CJNE A, #0AH, EsteNebolo0A
bude nacitavat v slucke bajty z adresy v registri R0 az kym nenacita bajt 0AH
dik za radi daco hadam spravim zajtra v skole
chjo.
MOV R0, #40H ;adresa
MOV R1, #0 ;sucet
MOV R2, #0 ;pocet
EsteNebolo0A:
MOVX A, @R0
INC R0
CJNE A, #0AH, EsteNebolo0A
EsteNebolo0F:
ADD R1, A ;pridaj do suctu
INC R2 ;zvys pocet
MOVX A, @R0
INC R0
CJNE A, #0FH, EsteNebolo0F
ADD R1, A ;pridaj aj to posledne 0F do suctu
INC R2 ;zvys pocet
MOV R0, #30H
MOVX @R0, R1 ;sucet
INC R0
MOV A, R1
MOV B, R2
DIVAB
MOVX @R0, A ;priemer
Tak dajak zhruba, mozu tam byt nepresnosti ptz predpotopnu 8051 som nevidel asi 15rokov
velmo pekne dakujem