Programmēšana Z80 ar montētājs

H

Hammer111

Guest
Hi all

Manu augstskolu uzdevums ir panākt, lai kods, kas būs sava veida (no mazākās uz lielāko) 10 datus (numurs) no atmiņas glabāt adresses no 50H līdz 60H.Esmu strādājusi par šo 5 stundas, un tas nav izdevies.
Es domāju, ka manā pusē loģika ir labs, bet kaut kā JP instrukcija vienmēr tiek darīts.

Tas ir teksta attēlojums Ko I (līnijas vadā):
Es ielādes HL reģistru, lai risinātu 50H, tad iekrauj akumulators ar datiem atmiņu 50H adresi, es palielinājās HL reģistrā ar vienu tā tas norāda uz 51H, piekrautas reģistrēties B ar datu 51H.Put and atiestatīt veikt karogu.Atņem AB regster samazinājās HL reģistru, lai tas norāda uz adresi 50H.Loaded atkal ar datu 50H (jo atņemot reģistrs ir pārrakstīts, bet tur veiktu karoga), palielināta HL (51H)
tad
Izsauciens tas ir, ja mana programma nomirst, līnijas JP C, MEM vajadzētu pāriet uz MEM vietas, ja tas veic karogu ir iestatīts uz 1, bet man tas vienmēr lec (neatkarīgi no carry karogs) Izsauciens
at MEM:
slodze adrese 51H ar datu reģistrs, samazinājās HL (50H) un kravas 50H ar B reģistrs

Pamatā pie MEM es pārslēdz datu 50H ir 51H un no 51H līdz 50H jo atņemot parādīja veikt karogu.
Atkal mana problēma ir, vai atņemot ir pozitīva vai negatīva (carry flag iestatīts uz 1 vai 0) Esmu izpildi MEM apakšprogrammu.

Kods:

LD HL, 50H
LD, (HL)
INC HL
LD B, (HL)
UN
SBC, B
Decembris HL
LD, (HL)
INC HL
JP C, MEM
MEM:
LD (HL)
Decembris HL
LD (HL), B
Apturēt
END

 
Šķirošanai, Jums nepieciešams looping.Bet tur ia ne cilpa jūsu programmā!

Mēģiniet uzzināt vienkāršākā šķirošanas methode - Bubble Sort algoritma.

 
IANP THANK YOU VERY MUCH IT DARBI

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
Tas ir tikai sākums programma tas nav pilnīgs programma šķirošanu.
Es domāju, iekraušanas 2 datu vispirms tad salīdzinātu un savešanu atmiņā jāšķiro pēc tam iekraušana nākamo datus un salīdzinot tos ar iepriekšējo divu un nosūtot to atbilstīgos pozīciju.
Vai to bubble sort dara?

THANK YOU puiši atbildes!!

 
Desmit numurus, salīdzināt => 9 cilpas ..

Pirmo atkārtojumu dos Jums mazākais skaits partijā ..
Otrā atkārtojuma (9 numuri, lai risinātu) sniegs jums otro mazāko numuru ..utt ..
Pēdējā atkārtošanas, kas faktiski būs salīdzināt tikai 2 numurus, sniegs jums lielākais skaits partijā ..

Sveicieni,
IanP

 
Es programmu, kas no 10 numuriem atmiņā konstatē vismazākais.
man tas numurs uz pirmo adresi (50H) un pirmais numurs likts uz to vietā.
Es mēdzu adrese 70h, lai noliktavas adrese no mazākā skaitā tiem 10 numuri

Šeit ir kods:

LD HL, 50H
LD D, 9
LOOP1:
LD, (HL)
INC HL
Loop:
LD B, (HL)
KP B
CALL NC, FLAG0
CALL C, FLAG1
Decembris D
JR NZ, LOOP
LD HL, 50H
LD C (HL)
LD HL, (70h)
LD (HL), C
LD HL, 50H
LD (HL)
Apturēt

FLAG0:
LD, B
LD (70h), HL
INC HL
LD B, (HL)
RET

FLAG1:
INC HL
LD B, (HL)
RET

Nākamais solis ir darīt to pašu procedūru, bet es jāizslēdz Pirmais numurs ir adreses 50H, jo tas ir mazākais SO I DO NOT WANT TO BE meklēt vēlreiz.
Tas nozīmē, ka otrajā rindā jānorāda uz 8 un sākot adresei jābūt 51H (pirmie divi līniju kods).

Problēma ir tā, ka es nezinu, kā samazināt tos SĀKUMĀ KODS UN GADA BEIGĀS kur to izlikt otro mazāko SKAITS UZ pašu adresi kā pirmā.Es varētu darīt to manuāli, bet tas nav noderīgs.

 
Hammer111:
Lūdzu pārbaudīt šo apakšpasākumu rutīnas, man nav to izmēģinātu
Kods:

; Memory platība 50h līdz 60h (17 bytes)BubbleSort:

LD DE, 0050h

Scan:

LD, (DE)

PUSH DE

POP HL

INC hl; HL = DE 1

Salīdzināt:

LD B, (HL)

CP, B; => B

JR NC, NoSwap jā, nav swap

LD C, B

LD B,

LD, C; Swap: B

LD (DE),; Save to top visvairāk vieta

NoSwap:

INC hl; Next baitu salīdzināt

LD, 61h

CP, L; end of array?

JR NZ, salīdzināt, nav vēl nākamajā salīdzinātINC DE; Next Top visvairāk vieta

LD, 60h

CP, E; beigas skenēšanas?

JR NZ, Scan, nav vēl nākamajā Scan

RET
 
Akumulators ir iestrēdzis ar 61H adresi Jūsu kodu.

Es kodu, izmantojot kādu no jūsu līnijām, kas palīdzēja man.
Vienīgais ir tas, ka es nezinu, kā pārtraukt cilpu pēdējā līnija (JR LOOP), es gribu to pārtraukt, kad tā sasniedz adrese 5AH
Es mēģināju nodot šajā vietā JR LOOP līnija

LD, 5AH
CP L
JR NZ LOOP
tas darbojas uz dažiem cikliem (attiecībā uz 3 vai 4 numurus), un tad apstājas (tā apstājas kaut kur ap 54h

Kods:; slodze adrese 50HLD DE, 50HLoop:LD, (DE)

PUSH DE

POP HLSALĪDZINĀT:INC HL

LD B, (HL)

CP B> = b

CALL NC, SWAP; ja carry = 0 slēdzis datu

LD C,

LD, 5AH

CP L

LD, C

CALL NZ, salīdzina

JP Rabindro SangeetSWAP:

PUSH HL

POP IX

LD C,

LD, B

LD B, C

RETRabindro Sangeet:

PUSH DE

POP HL

LD C (HL)

LD (DE),

PUSH IX

POP HL

LD L, H

LD H, 0

LD (HL), C

INC DE

JP LOOP

Apturēt

 
Yeah tas darbojas, es esmu ļoti žēl, bet nezinu, kāpēc nestrādāja pirmo reizi, varbūt dažās iepriekšējās programmas iestrēdzis tā.

Vēlreiz I'M SORRY, tas strādā perfekti PALDIES LOT

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Viens jautājums, kad es pop 50H adresi IX reģistrā, tas ir piepildīts ar 5000h adresi kāpēc?

 
Quote:

kad es pop 50H adresi IX reģistrā, tas ir piepildīts ar 5000h adrese
 
off topic:
ja jums patika jūsu Z8 varbūt jums būs uzzināt Zilog mikrokontrolleri ģimenes, kas ir bezmaksas C kompilators Es domāju, ka pēc tam jūs rakstījāt montāžas atradīsiet plānošanas ca elpu

 
Hammer111 rakstīja par pirmo norīkošanu:
Quote:

Manu augstskolu uzdevums ir panākt, lai kods, kas būs sava veida (no mazākās uz lielāko) 10 datus (numurs) no atmiņas glabāt adresses no 50H līdz 60H.
 
Nu, yeah tas bija tikai augstskolas uzdevumu un vakar bijām strādā Zilog eZ80Acclaim programmatūru un pārgāja uz C programming.

Liels paldies par palīdzību.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top