Just nu i M3-nätverket
Gå till innehåll

c64


CamillaS

Rekommendera Poster

hej.

jag håller på att programmera i c64.

jag tänkte bara kolla om någon kan förklara för mej vad sec, sbc och sta gör?

 

Länk till kommentar
Dela på andra webbplatser

Jag har inte hackat 64-assembler sen kanske 1991 men i korthet är det så här:

 

STA - STore Accumulator = Lagra värdet i accumulatorn i adressen som följer. Står vanligtvis STA $A000 (för att lagra accumulatorn på adressen $A000 men det kan också vara t.ex "STA $A000, X" (eller Y) för att lagra den på $A000+(värdet av x).

 

SBC - SuBtract with Carry - Dvs, den gör en subtraktion med hänsyn tagen till carry-flagan. Carry-flaggan är i princip en indikation på att subtraktionen behövde "låna". Jag har ärligt talat glömt exakt hur det var men jag har för mig att carryn hade någon funktion även för att genomföra subtraktionen. Du får googla på det.

 

SEC - SEt Carry. motsatsen till CLC (CLear Carry)

 

Det känns lite som skoluppgift om man inte vet vad STA gör men frågar om SEC, berätta :)

 

Länk till kommentar
Dela på andra webbplatser

jo det är en skoluppgift..men det var mest sec jag var nyfiken på.

sen är det inte fel att få lite repetering av det gamla :P

 

Länk till kommentar
Dela på andra webbplatser

men det var mest sec jag var nyfiken på

Räckte svaret eller vill du förstå konceptet carry?

 

sen är det inte fel att få lite repetering av det gamla

Absolut inte, jag blev mest förvånad över att frågan dök upp, det är inte direkt mainstream med assembler för C64 nuförtiden :-)

 

 

[inlägget ändrat 2008-10-18 20:26:06 av fhe]

Länk till kommentar
Dela på andra webbplatser

nej jag har inte så klart för mig än om carry..

jag har en kod här jag fått som är en enkel variant av en uppgift jag fått. den lyder så här.

 

inc d020

 

jsr ffe4

 

cmp #00

beq 1000

 

jsr ffd2

 

cmp #31

beq 101a

cmp #32

beq 101a

 

cmp #51

bne 1000

 

brk

 

sec // 101a

sbc #11

sta 1001

jmp 1000

 

jag hänger med hela vägen ner till efter brk om vad dom gör.

det var därför jag ville ha lite hjälp.

 

Länk till kommentar
Dela på andra webbplatser

Det var ett rätt ostandard sätt att skriva assember till c64 på :-)

 

Nåväl, SEC sätter carry-flaggan.

Därefter subtraherar man ackumulatorn med med 11 och sparar värdet i 1001, sen hoppar man till 1000 (vilket ärligt talat makear noll sense men vafan, det är ju en skoluppgift och det var länge sen sist :).

 

Det är på tok för länge sen för att jag ska komma ihåg men jag har för mig att carryn vid subraktioner är just låneminnet. Dvs om du ska subtrahera det hexadecimala talet 99 från 100 så gör du först:

00-99 => 01 + C (carryn sätts för att du var tvungen att låna).

därefter gör du:

01 - 00 och eftersom carryn är satt så blir det 01 - 00 - 1 (du har ju lånat ett) => 0

 

När du sätter carryn innan subtraktionen så talar du alltså i princip om att ackumulatorn ska minskas med talet i subtaktionen och därefter med ett till.

 

Själva carryn används vid annat än subtraktioner... Lite kan man se den som en extra bit för ackumulatorn. Jämför med "minnesraden" över själva uträkningen när du i lågstadiet fick lära dig att räkna + och - på rutat papper, när du la ihop 12+19 så började du med 9+2, skrev 1 underst och satte en liten etta över 1+1-kollumnen. Den lilla ettan är carry-flaggan, dvs det du bär (carry) med dig till nästa del av operationen.

 

Edit: Var tvungen att färska upp lite, hittade länken nedan. Jag hade någon liknande i pappersform när jag hackade 6502/6510-assembler (inte bara på 64:an) och den var rätt användbar: http://www.masswerk.at/6502/6502_instruction_set.html

Det är inte mer som skiljer 6510 från 6502 än att du kan använda den.

 

[inlägget ändrat 2008-10-18 20:55:17 av fhe]

Länk till kommentar
Dela på andra webbplatser

Tragiskt att jag var tvungen att vara på släktmiddag när det inte bara dök upp en charmig fråga assemblerfråga, utan även att jag fick se att fhe var tillbaka i livet. Me be excited 041

 

Att sätta litta carrys vore väl trevligt. Varför inte dra igång det riktigt nördigt. Gissa vad jag börjar på snart....

 

MER: insåg att även jag glömt bort för mkt av den assemblern. Väldigt synd, för det var passion att txa:a på sin tid =)

[inlägget ändrat 2008-10-19 05:47:44 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

utan även att jag fick se att fhe var tillbaka i livet

Tack!

Inte för att jag tänkt maila men fungerar den adress du har i profilen fortfarande eller har du bara glömt uppdatera?

 

Länk till kommentar
Dela på andra webbplatser

nte för att jag tänkt maila men fungerar den adress du har i profilen fortfarande eller har du bara glömt uppdatera?

Hej. jodå den fungerar. Det är förvisso min gamla jobbadress och jag kollar av den enbart nån gång i veckan. Men om du använder den får du även min nya mail i ett studsmeddelande .

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...