Just nu i M3-nätverket
Jump to content

c64


CamillaS

Recommended Posts

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?

 

Link to comment
Share on other sites

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 :)

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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 .

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...