Var är det lämpligt att diskutera .asm kod?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Sist jag la upp lite .asm kod här, blev det lite kritik. Långa listningar uppskattades inte. Var är det lämpligt att diskutera .asm kod? Knåpar med 6502, 6510, atmega, x86 och kanske några till. Håller på att plocka ut bit's ur en byte(hela minnet), för att blinka en LED. Morse eller dyl. Blir säkert ljudpulser med. Skriver i en 6502 emulator, och avrstudio parallellt. Vågar jag lägga upp min kod här för kritik? Kritik som effektiviserar tar jag gärna.
Användarvisningsbild
lgrfbs
Inlägg: 7313
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av lgrfbs »

Att det blir långa listor, kan bero på om man lägger all kod rakt in i inlägget.
Om du använder [ Code ] [ /code ] borde allt läggas fint i en textruta och inte göra inlägget så långt.
Jag tycker att du bord kunna lägga ditt inlägg i denna katogorin.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Testar.

Kod: Markera allt

; Plocka bits från en byte
 .ORG $1000
 jmp $1010
alfa: .DB 0,1,"01234567",0,0,0
 LDY #157	; Byte in
 TYA
 sec			; Set carry??
 SBC #128		; Sub bit7
 bmi hopp100		; testa om "1"
 jsr on			; aktivera om "1"
hopp100: BPL hopp1	; Testa om "0"
 jsr off		; deaktivera om "0"
 adc #128		; Åter till 0 om den var 0
hopp1:  SBC #64		;-----
 bmi hopp101		; testa om "1"
 jsr on			; aktivera om "1"
hopp101: BPL hopp2	; Testa om "0"
 jsr off		; deaktivera om "0"
 adc #64 		;-----
hopp2: SBC #32		;se ovan
 bmi hopp102
 jsr on
hopp102:  BPL hopp3
 jsr off 
 ADC #32  		;-----
hopp3: SBC #16
 bmi hopp103
 jsr on
hopp103:  BPL hopp4
 jsr off
 ADC #16 		;-----
hopp4: SBC #8
 bmi hopp107
 jsr on
hopp107: BPL hopp5
 jsr off
 ADC #8
hopp5: SBC #4 		;-----
  bmi hopp108	
 jsr on
hopp108: BPL hopp6
 jsr off
 ADC #4 
hopp6: SBC #2 		;-----
  bmi hopp109
 jsr on
hopp109: BPL hopp7
 jsr off
 ADC #2 
hopp7: SBC #1 		;-----
 bmi hopp110
 jsr on
hopp110: BPL hopp8
 jsr off
 ADC #1 		;-----
hopp8: 
 RTS 
 
off;
 LDX #$00		
 ;dec $d020           För skärmblink
 RTS 
on:
 LDX #$01
 ;inc $d020           För skärmblink
 RTS
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Provade först Code. Sen klippte jag och klistrade [ Code ]. Och till sist såg jag knappen Code ovan :wall: när man skriver ett inlägg.
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av Icecap »

Använder du ingen indentering?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av sodjan »

Att använda code taggarna kan ju inte vara problemet.
Det brukar vara ett större problem att åstakomma en
vettig fråga samt en kod som är läsbar... :-)

Jag fattar inte vad tråden handlar om, om jag ska vara ärlig....
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Klippte och klistrade. Det ser ine likt ut hör på forumet som i min 6502 emulator. Där måste vissa rader börja med space. Lite tom rader här och var skulle kanske inte skada. Vilket jag googlade fram som indentering.

Känns som det borde gå att optimera en del, nästan samma rader upprepas 8 gånger.... Eftersom kommandot BIT inte finns i ovan processorer, provade jag en annan variant.

sodjan: Jag förstår inte ditt inlägg.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av sodjan »

Det jag menar är att, att använda code-taggarna löser ju i sig inget.
Det är ju självklart att man gör det när man postar (t.ex) programkod.

Det svåra är istället att åstakomma en vettig fråga.
Men varför denna tråd? Det är väl bara att köra på !?

> Det ser ine likt ut hör på forumet som i min 6502 emulator.

*Oftast* beror det på tabbar...
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Har jag gjort flera tabbar? Hmmm du menat nog tabulatortangenten, mellanslag borde funka bättre.

Fråga 1 Är det lämpligt att diskutera kod i detta forum? 2 Finns det bättre ställen? Helst på Svenska eller motvilligt Engelska. 3 Vilka fel finns i min kod? Förutom programmerar etik.

Icecap: Jag tar det som en komplimang att du bara hittar fel i programmerar etiken. Men är ganska säker på att det finns utrymme för optimering.

Tänk på att progget i första hand är till atmega. Men varför skriver jag då i 6502 kod? Svar: för jag kan den minst dåligt. Proggar parallellt i avrstudio. Kod kommer, om jag får... om nån har en bra länk till korta "examples" atmega .asm blir jag glad.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av Walle »

1802 skrev:Lite tom rader här och var skulle kanske inte skada. Vilket jag googlade fram som indentering.
Fel.
Utan indentering:

Kod: Markera allt

If (condition)
(
Do something
);
if else
(
do something else
);
Med indentering:

Kod: Markera allt

If (condition)
(
      Do something
);
if else
(
      do something else
);
"Problemet" är att du t.ex. i "den andra tråden" postar "obskyr kod" utan vare sig kommentarer eller en tydlig frågeställning om VAD det är du vill ha hjälp med. De flesta är inte så pigga på att spendera timmar på att försöka förstå vad det är du försöker åstadkomma. Med en tydlig frågeställning och tydligt kommenterad kod så är chansen att få hjälp betydligt större. Men för all del, inget hindrar att du postar kod, mig veterligen finns det ingen regel som säger att koden MÅSTE vara välkommenterad och läslig. Men du bör nog inte förvänta dig för många hjälpsamma svar om du inte ställer tydliga frågor med läsbar kod.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Så bra var google. Om man inte testar det man tror man förstått, kan det bli fel. Det där har jag anv utan att veta vad det heter, och säkert inte helt korrekt.

Ofta blir inte ens det jag skriver i "besvara" likt när det är upplagt. Och sen tycker jag det är viktigare hur koden ser ut när den jobbar. x86 skriver jag ofta i debug, där finns inte etikett behovet.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av jesse »

Sodjan menar att du kan försöka förklara vad du vill få gjort med koden.
Vi kan inte säga om den är "rätt" eller "fel" om vi inte vet vad du vill att den ska göra.
Nånting gör den ju... men gör den som du vill?

Du skriver att du " Skriver i en 6502 emulator, och avrstudio parallellt. " ... Men vad är kodexemplet för något? Till en 6502 eller till en AVR?

SBC är ju "Subtract with Carry", men varför står den instruktionen med STORA bokstäver när de flesta andra är skrivna med små bokstäver? Sådant gör att det blir ännu svårare att förstå vad du har tänkt.

EDIT: läste detta nu:
Tänk på att progget i första hand är till atmega. Men varför skriver jag då i 6502 kod? Svar: för jag kan den minst dåligt. Proggar parallellt i avrstudio. Kod kommer, om jag får... om nån har en bra länk till korta "examples" atmega .asm blir jag glad.
OK. Men det är ganska meningslöst att blanda två olika sorters assembler. Försök att använda en lista på vilka koder din atmega kan använda, och läs i den. Jag vet inte vad t.ex. TYA eller jsr gör, men en ATmega kommer aldrig att fatta det heller! Jag länkade ju till assembler-tutorial i förra tråden. Har du inte laddat ner den. Du borde ha den framme och läsa i hela tiden om du inte kan AVR-assembler utantill. Då behöver du inte fråga om sec betyder set carry. Det står där.
om nån har en bra länk till korta "examples" atmega .asm blir jag glad.
Men kollade du inte länken i det här inlägget?
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Progget är skrivet i en enkel pc 6502 emulator. Den bryr sig inte om stora eller små bokstäver. Och jag vet inte skillnaden. Målet är att göra om en byte till 8 bits. Som tex blinkar eller piper. 1 tidsenhet för nolla och 3 för etta. Etta aktiverar, och nolla gör inget. Eller nått i den stilen. Och går igenom hela minnet.

Skrev ett basic program till c64 nyligen och skickade datan $0000-ffff$(hela byte) till ljudchippet. Lät som ett gammalt spel jag inte mins namnet på. Lägger upp progget så småningom. För tillfället ligger det på c64 diskett. Men i värsta fall får jag överföra det för hand. Har ett c64 falskt rs232 kort. Inte äkta signaler(c64 lämnar bara 5V), men det funkade i ena riktningen mot PC.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av jesse »

Det finns en instruktion som heter ROL . Den finns både i 6502 och AVR assembler. "ROL shifts all bits left one position. The Carry is shifted into bit 0 and the original bit 7 is shifted into the Carry." Den roterar en byte ett steg, dvs. en bit åt vänster. Högsta biten, bit 7 i registret, skickas ut till carry. Detta kan du använda för att plocka ut bitarna en och en och sedan hoppa om carry är etta eller nolla.

Du gör då en loop som kör 8 varv - ett varv per bit.

pseudoassembler:

Kod: Markera allt

;/åtta bitar finns i register "r" som ska analyseras.
    sätt loop-räknare till 8
loop:
    rotera "r" vänster med ROL så att bit 7 hamnar i carry
    hoppa till "off" om carry är nolla.
        utför "on"-rutin
        hoppa till forsätt_loop
off:
        utför off-rutin
fortsätt_loop:
    minska loop-räknade med ett (dec)
    hoppa till loop om loopräknare inte är noll.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Smart lösning, jag skall prova. Är inte så hemma på flaggorna. Men det löser sig.
Skriv svar