Skip to content
Snippets Groups Projects
Commit 1c332ed8 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vortragsfolien und Beispiele 31.5.2023

parent b96e6d07
Branches
No related tags found
No related merge requests found
Showing
with 2009 additions and 0 deletions
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C945A000C940000DB
:100080008FEF8AB980E08BB9AFEF61E17AE7A150D9
:1000900060407040E1F700C0000084E08BB9AFEF32
:1000A00061E17AE7A15060407040E1F700C00000D4
:0800B0000C944200F894FFCF0C
:00000001FF
.text ; "Dies ist ausführbarer Code."
.global main ; main-Label nach außen sichtbar machen
.type main, @function
main: ; Einsprungpunkt: Hier geht's los.
ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten
out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a)
loop:
ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2)
out 0x0b,r24 ; In PORTD schreiben (Port Nr. 0x0b, Speicherzelle 0x2b)
ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen
ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register
ldi r23,hlo8(7999999)
1:
subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit
sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1
rjmp .
nop
ldi r24,0x04 ; LED einschalten (angeschlossen an Ausgang Nr. 2)
out 0x0b,r24 ; In PORTD schreiben (Port Nr. 0x0b, Speicherzelle 0x2b)
ldi r26,lo8(7999999) ; 1 Taktzyklus
ldi r22,hi8(7999999) ; 1 Taktzyklus
ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife
1:
subi r26,1 ; 1 Taktzyklus
sbci r22,0 ; 1 Taktzyklus
sbci r23,0 ; 1 Taktzyklus
brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt
; --> 5 Taktzyklen pro Schleifendurchlauf
rjmp . ; 2 Taktzyklen lang nichts machen
nop ; 1 Taktzyklus lang nichts machen
; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten
; --> Die Schleife wird sozusagen 8000000 mal durchlaufen
; (7999999 Durchläufe + Extra-Taktzyklen)
; und verbraucht dabei jedesmal 5 Taktzyklen.
; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden.
jmp loop
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C945A000C940000DB
:100080008FEF8AB980E085B9AFEF61E17AE7A150DF
:1000900060407040E1F700C0000084E085B9AFEF38
:1000A00061E17AE7A15060407040E1F700C00000D4
:0800B0000C944200F894FFCF0C
:00000001FF
.text ; "Dies ist ausführbarer Code."
.global main ; main-Label nach außen sichtbar machen
.type main, @function
main: ; Einsprungpunkt: Hier geht's los.
ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten
out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a)
loop:
ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen
ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register
ldi r23,hlo8(7999999)
1:
subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit
sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1
rjmp .
nop
ldi r24,0x04 ; LED einschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; 1 Taktzyklus
ldi r22,hi8(7999999) ; 1 Taktzyklus
ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife
1:
subi r26,1 ; 1 Taktzyklus
sbci r22,0 ; 1 Taktzyklus
sbci r23,0 ; 1 Taktzyklus
brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt
; --> 5 Taktzyklen pro Schleifendurchlauf
rjmp . ; 2 Taktzyklen lang nichts machen
nop ; 1 Taktzyklus lang nichts machen
; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten
; --> Die Schleife wird sozusagen 8000000 mal durchlaufen
; (7999999 Durchläufe + Extra-Taktzyklen)
; und verbraucht dabei jedesmal 5 Taktzyklen.
; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden.
jmp loop
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C945A000C940000DB
:100080008FEF8AB980E085B9AFEF61E17AE7A150DF
:1000900060407040E1F700C0000083E185B9AFEF38
:1000A00061E17AE7A15060407040E1F700C00000D4
:0800B0000C944200F894FFCF0C
:00000001FF
.text ; "Dies ist ausführbarer Code."
.global main ; main-Label nach außen sichtbar machen
.type main, @function
main: ; Einsprungpunkt: Hier geht's los.
ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten
out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a)
loop:
ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen
ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register
ldi r23,hlo8(7999999)
1:
subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit
sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1
rjmp .
nop
ldi r24,0x13 ; LED einschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; 1 Taktzyklus
ldi r22,hi8(7999999) ; 1 Taktzyklus
ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife
1:
subi r26,1 ; 1 Taktzyklus
sbci r22,0 ; 1 Taktzyklus
sbci r23,0 ; 1 Taktzyklus
brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt
; --> 5 Taktzyklen pro Schleifendurchlauf
rjmp . ; 2 Taktzyklen lang nichts machen
nop ; 1 Taktzyklus lang nichts machen
; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten
; --> Die Schleife wird sozusagen 8000000 mal durchlaufen
; (7999999 Durchläufe + Extra-Taktzyklen)
; und verbraucht dabei jedesmal 5 Taktzyklen.
; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden.
jmp loop
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C945A000C940000DB
:100080008FEF8AB980E085B9AFEF61E17AE7A150DF
:1000900060407040E1F700C0000080E285B9AFEF3A
:1000A00061E17AE7A15060407040E1F700C00000D4
:0800B0000C944200F894FFCF0C
:00000001FF
.text ; "Dies ist ausführbarer Code."
.global main ; main-Label nach außen sichtbar machen
.type main, @function
main: ; Einsprungpunkt: Hier geht's los.
ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten
out 0x0a,r24 ; In DDRD schreiben (Port Nr. 0x0a, Speicherzelle 0x2a)
loop:
ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen
ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register
ldi r23,hlo8(7999999)
1:
subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit
sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1
rjmp .
nop
ldi r24,0x20 ; LED einschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; 1 Taktzyklus
ldi r22,hi8(7999999) ; 1 Taktzyklus
ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife
1:
subi r26,1 ; 1 Taktzyklus
sbci r22,0 ; 1 Taktzyklus
sbci r23,0 ; 1 Taktzyklus
brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt
; --> 5 Taktzyklen pro Schleifendurchlauf
rjmp . ; 2 Taktzyklen lang nichts machen
nop ; 1 Taktzyklus lang nichts machen
; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten
; --> Die Schleife wird sozusagen 8000000 mal durchlaufen
; (7999999 Durchläufe + Extra-Taktzyklen)
; und verbraucht dabei jedesmal 5 Taktzyklen.
; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden.
jmp loop
:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C945A000C940000DB
:100080008FEF84B980E085B9AFEF61E17AE7A150E5
:1000900060407040E1F700C0000080E285B9AFEF3A
:1000A00061E17AE7A15060407040E1F700C00000D4
:0800B0000C944200F894FFCF0C
:00000001FF
.text ; "Dies ist ausführbarer Code."
.global main ; main-Label nach außen sichtbar machen
.type main, @function
main: ; Einsprungpunkt: Hier geht's los.
ldi r24,0xff ; Alle 8 Anschlüsse auf "Output" schalten
out 0x04,r24 ; In DDRB schreiben (Port Nr. 0x04, Speicherzelle 0x24)
loop:
ldi r24,0x00 ; LED ausschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; Warteschleife: von 7999999 rückwärts bis 0 zählen
ldi r22,hi8(7999999) ; Die 24-Bit-Zahl 7999999 in 3 8-Bit-Register
ldi r23,hlo8(7999999)
1:
subi r26,1 ; Subtrahiere 1 von den untersten 8 Bit
sbci r22,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
sbci r23,0 ; Subtrahiere 0 von den mittleren 8 Bit, berücksichtige Übertrag (carry)
brne 1b ; branch if not equal (= not zero): bedingter Sprung zu Label 1
rjmp .
nop
ldi r24,0x20 ; LED einschalten (angeschlossen an Ausgang Nr. 2)
out 0x05,r24 ; In PORTB schreiben (Port Nr. 0x05, Speicherzelle 0x25)
ldi r26,lo8(7999999) ; 1 Taktzyklus
ldi r22,hi8(7999999) ; 1 Taktzyklus
ldi r23,hlo8(7999999) ; 1 Taktzyklus --> 3 Taktzyklen vor der Schleife
1:
subi r26,1 ; 1 Taktzyklus
sbci r22,0 ; 1 Taktzyklus
sbci r23,0 ; 1 Taktzyklus
brne 1b ; 2 Taktzyklen, wenn er springt, 1 Takzyklus, wenn er nicht springt
; --> 5 Taktzyklen pro Schleifendurchlauf
rjmp . ; 2 Taktzyklen lang nichts machen
nop ; 1 Taktzyklus lang nichts machen
; --> zusätzlich zu der Schleife weitere 3 + 3 = 6 Taktzyklen warten
; --> Die Schleife wird sozusagen 8000000 mal durchlaufen
; (7999999 Durchläufe + Extra-Taktzyklen)
; und verbraucht dabei jedesmal 5 Taktzyklen.
; Bei 16000000 Taktzyklen pro Sekunde sind das insgesamt 2.5 Sekunden.
jmp loop
../common/io-ports-and-interrupts.pdf
\ No newline at end of file
../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
../common/logo-hochschule-bochum.pdf
\ No newline at end of file
[''] = "-.-.-",
[''] = ".-.-.",
[''] = "...-.-",
[''] = "...-.",
['!'] = "-.-.--",
['"'] = ".-..-.",
['''] = ".----.",
['('] = "-.--.",
[')'] = "-.--.-",
['+'] = ".-.-.",
[','] = "--..--",
['-'] = "-....-",
['.'] = ".-.-.-",
['/'] = "-..-.",
['0'] = "-----",
['1'] = ".----",
['2'] = "..---",
['3'] = "...--",
['4'] = "....-",
['5'] = ".....",
['6'] = "-....",
['7'] = "--...",
['8'] = "---..",
['9'] = "----.",
[':'] = "---...",
[';'] = "-.-.-.",
['='] = "-...-",
['?'] = "..--..",
['@'] = ".--.-.",
['A'] = ".-",
['B'] = "-...",
['C'] = "-.-.",
['D'] = "-..",
['E'] = ".",
['F'] = "..-.",
['G'] = "--.",
['H'] = "....",
['I'] = "..",
['J'] = ".---",
['K'] = "-.-",
['L'] = ".-..",
['M'] = "--",
['N'] = "-.",
['O'] = "---",
['P'] = ".--.",
['Q'] = "--.-",
['R'] = ".-.",
['S'] = "...",
['T'] = "-",
['U'] = "..-",
['V'] = "...-",
['W'] = ".--",
['X'] = "-..-",
['Y'] = "-.--",
['Z'] = "--..",
['_'] = "..--.-",
['a'] = ".-",
['b'] = "-...",
['c'] = "-.-.",
['d'] = "-..",
['e'] = ".",
['f'] = "..-.",
['g'] = "--.",
['h'] = "....",
['i'] = "..",
['j'] = ".---",
['k'] = "-.-",
['l'] = ".-..",
['m'] = "--",
['n'] = "-.",
['o'] = "---",
['p'] = ".--.",
['q'] = "--.-",
['r'] = ".-.",
['s'] = "...",
['t'] = "-",
['u'] = "..-",
['v'] = "...-",
['w'] = ".--",
['x'] = "-..-",
['y'] = "-.--",
['z'] = "--..",
[''] = "........",
#include <avr/io.h>
#include <stdint.h>
#define F_CPU 16000000
#include <util/delay.h>
#define DIT 200
#define DAH (3 * DIT)
uint8_t morse_bits[128] =
{
0x00, 0x00, 0x15, 0x0a, 0x28, 0x00, 0x08, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x35, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1e,
0x0d, 0x2d, 0x00, 0x0a, 0x33, 0x21, 0x2a, 0x09,
0x1f, 0x1e, 0x1c, 0x18, 0x10, 0x00, 0x01, 0x03,
0x07, 0x0f, 0x07, 0x15, 0x00, 0x11, 0x00, 0x0c,
0x16, 0x02, 0x01, 0x05, 0x01, 0x00, 0x04, 0x03,
0x00, 0x00, 0x0e, 0x05, 0x02, 0x03, 0x01, 0x07,
0x06, 0x0b, 0x02, 0x00, 0x01, 0x04, 0x08, 0x06,
0x09, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x2c,
0x00, 0x02, 0x01, 0x05, 0x01, 0x00, 0x04, 0x03,
0x00, 0x00, 0x0e, 0x05, 0x02, 0x03, 0x01, 0x07,
0x06, 0x0b, 0x02, 0x00, 0x01, 0x04, 0x08, 0x06,
0x09, 0x0d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
};
uint8_t morse_length[128] =
{
0, 0, 5, 5, 6, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 6, 6, 0, 0, 0, 0, 6, 5, 6, 0, 5, 6, 6, 6, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 0, 5, 0, 6,
6, 2, 4, 4, 3, 1, 4, 3, 4, 2, 4, 3, 4, 2, 2, 3,
4, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4, 0, 0, 0, 0, 6,
0, 2, 4, 4, 3, 1, 4, 3, 4, 2, 4, 3, 4, 2, 2, 3,
4, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4, 0, 0, 0, 0, 8
};
void morse (char *s)
{
if (s)
while (*s)
{
int c = *s++;
if (c == ' ')
_delay_ms (7 * DIT);
else
{
uint8_t bits = morse_bits[c];
uint8_t mask = 1;
int l = morse_length[c];
for (int i = 0; i < l; i++)
{
PORTD = 0x04;
if (bits & mask)
_delay_ms (DAH);
else
_delay_ms (DIT);
mask <<= 1;
PORTD = 0x00;
_delay_ms (DIT);
}
_delay_ms (3 * DIT);
}
}
}
int main (void)
{
DDRD = 0xff;
PORTD = 0x00;
while (1)
{
morse ("Hochschule Bochum");
_delay_ms (15 * DIT);
}
return 0;
}
:100000000C9434000C9449000C9449000C94490061
:100010000C9449000C9449000C9449000C9449003C
:100020000C9449000C9449000C9449000C9449002C
:100030000C9449000C9449000C9449000C9449001C
:100040000C9449000C9449000C9449000C9449000C
:100050000C9449000C9449000C9449000C944900FC
:100060000C9449000C94490011241FBECFEFD8E036
:10007000DEBFCDBF12E0A0E0B1E0E4E6F1E002C0F7
:1000800005900D92A231B107D9F70E949F000C9400
:10009000B0000C940000009709F450C0FC0154E03B
:1000A0002191222309F44AC0022E000C330B203286
:1000B000310541F42FEF7BE584E42150704080400E
:1000C000E1F739C0D901A058BE4F6C91D901A050B9
:1000D000BF4F8C9190E020E030E041E028173907D5
:1000E0001CF55BB9742F762341F0AFEFBBE47DE1E3
:1000F000A150B0407040E1F707C0AFEFB3EC79E03A
:10010000A150B0407040E1F700C00000440F1BB8A0
:10011000AFEFB3EC79E0A150B0407040E1F700C020
:1001200000002F5F3F4FDACF8FEF9BE4ADE18150AE
:100130009040A040E1F700C00000B2CF08958FEFDB
:100140008AB91BB880E092E00E944B002FEF8BE74A
:1001500092E9215080409040E1F700C00000F2CFCA
:04016000F894FFCF41
:100164000000050506000500000000000000000076
:10017400000000000000000000000000000000007B
:100184000006060000000006050600050606060532
:100194000505050505050505050506060005000612
:1001A4000602040403010403040204030402020318
:1001B4000404030301030403040404000000000610
:1001C40000020404030104030402040304020203FE
:1001D40004040303010304030404040000000008EE
:1001E4000000150A280008000000000000000000BC
:1001F40000000000000000000000000000000000FB
:10020400003512000000001E0D2D000A33212A09BA
:100214001F1E1C1810000103070F07150011000C06
:10022400160201050100040300000E050203010784
:10023400060B020001040806090D03000000002C4F
:10024400000201050100040300000E05020301077A
:10025400060B020001040806090D0300000000005B
:10026400486F6368736368756C6520426F63687573
:020274006D001B
:00000001FF
.file "morse-08.c"
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__SREG__ = 0x3f
__tmp_reg__ = 0
__zero_reg__ = 1
.text
.global morse
.type morse, @function
morse:
/* prologue: function */
/* frame size = 0 */
/* stack size = 0 */
.L__stack_usage = 0
sbiw r24,0
brne .+2
rjmp .L1
movw r30,r24
ldi r21,lo8(4)
.L3:
ld r18,Z+
tst r18
brne .+2
rjmp .L1
mov __tmp_reg__,r18
lsl r0
sbc r19,r19
cpi r18,32
cpc r19,__zero_reg__
brne .L4
ldi r18,lo8(4479999)
ldi r23,hi8(4479999)
ldi r24,hlo8(4479999)
1: subi r18,1
sbci r23,0
sbci r24,0
brne 1b
rjmp .L13
.L4:
movw r26,r18
subi r26,lo8(-(morse_bits))
sbci r27,hi8(-(morse_bits))
ld r22,X
movw r26,r18
subi r26,lo8(-(morse_length))
sbci r27,hi8(-(morse_length))
ld r24,X
ldi r25,0
ldi r18,0
ldi r19,0
ldi r20,lo8(1)
.L6:
cp r18,r24
cpc r19,r25
brge .L15
out 0xb,r21
mov r23,r20
and r23,r22
breq .L7
ldi r26,lo8(1919999)
ldi r27,hi8(1919999)
ldi r23,hlo8(1919999)
1: subi r26,1
sbci r27,0
sbci r23,0
brne 1b
rjmp .L12
.L7:
ldi r26,lo8(639999)
ldi r27,hi8(639999)
ldi r23,hlo8(639999)
1: subi r26,1
sbci r27,0
sbci r23,0
brne 1b
.L12:
rjmp .
nop
lsl r20
out 0xb,__zero_reg__
ldi r26,lo8(639999)
ldi r27,hi8(639999)
ldi r23,hlo8(639999)
1: subi r26,1
sbci r27,0
sbci r23,0
brne 1b
rjmp .
nop
subi r18,-1
sbci r19,-1
rjmp .L6
.L15:
ldi r24,lo8(1919999)
ldi r25,hi8(1919999)
ldi r26,hlo8(1919999)
1: subi r24,1
sbci r25,0
sbci r26,0
brne 1b
.L13:
rjmp .
nop
rjmp .L3
.L1:
ret
.size morse, .-morse
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hochschule Bochum"
.section .text.startup,"ax",@progbits
.global main
.type main, @function
main:
/* prologue: function */
/* frame size = 0 */
/* stack size = 0 */
.L__stack_usage = 0
ldi r24,lo8(-1)
out 0xa,r24
out 0xb,__zero_reg__
.L17:
ldi r24,lo8(.LC0)
ldi r25,hi8(.LC0)
call morse
ldi r18,lo8(9599999)
ldi r24,hi8(9599999)
ldi r25,hlo8(9599999)
1: subi r18,1
sbci r24,0
sbci r25,0
brne 1b
rjmp .
nop
rjmp .L17
.size main, .-main
.global morse_length
.data
.type morse_length, @object
.size morse_length, 128
morse_length:
.byte 0
.byte 0
.byte 5
.byte 5
.byte 6
.byte 0
.byte 5
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte 6
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte 5
.byte 6
.byte 0
.byte 5
.byte 6
.byte 6
.byte 6
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 5
.byte 6
.byte 6
.byte 0
.byte 5
.byte 0
.byte 6
.byte 6
.byte 2
.byte 4
.byte 4
.byte 3
.byte 1
.byte 4
.byte 3
.byte 4
.byte 2
.byte 4
.byte 3
.byte 4
.byte 2
.byte 2
.byte 3
.byte 4
.byte 4
.byte 3
.byte 3
.byte 1
.byte 3
.byte 4
.byte 3
.byte 4
.byte 4
.byte 4
.byte 0
.byte 0
.byte 0
.byte 0
.byte 6
.byte 0
.byte 2
.byte 4
.byte 4
.byte 3
.byte 1
.byte 4
.byte 3
.byte 4
.byte 2
.byte 4
.byte 3
.byte 4
.byte 2
.byte 2
.byte 3
.byte 4
.byte 4
.byte 3
.byte 3
.byte 1
.byte 3
.byte 4
.byte 3
.byte 4
.byte 4
.byte 4
.byte 0
.byte 0
.byte 0
.byte 0
.byte 8
.global morse_bits
.type morse_bits, @object
.size morse_bits, 128
morse_bits:
.byte 0
.byte 0
.byte 21
.byte 10
.byte 40
.byte 0
.byte 8
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 53
.byte 18
.byte 0
.byte 0
.byte 0
.byte 0
.byte 30
.byte 13
.byte 45
.byte 0
.byte 10
.byte 51
.byte 33
.byte 42
.byte 9
.byte 31
.byte 30
.byte 28
.byte 24
.byte 16
.byte 0
.byte 1
.byte 3
.byte 7
.byte 15
.byte 7
.byte 21
.byte 0
.byte 17
.byte 0
.byte 12
.byte 22
.byte 2
.byte 1
.byte 5
.byte 1
.byte 0
.byte 4
.byte 3
.byte 0
.byte 0
.byte 14
.byte 5
.byte 2
.byte 3
.byte 1
.byte 7
.byte 6
.byte 11
.byte 2
.byte 0
.byte 1
.byte 4
.byte 8
.byte 6
.byte 9
.byte 13
.byte 3
.byte 0
.byte 0
.byte 0
.byte 0
.byte 44
.byte 0
.byte 2
.byte 1
.byte 5
.byte 1
.byte 0
.byte 4
.byte 3
.byte 0
.byte 0
.byte 14
.byte 5
.byte 2
.byte 3
.byte 1
.byte 7
.byte 6
.byte 11
.byte 2
.byte 0
.byte 1
.byte 4
.byte 8
.byte 6
.byte 9
.byte 13
.byte 3
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.ident "GCC: (GNU) 5.4.0"
.global __do_copy_data
../common/pgslides.sty
\ No newline at end of file
File added
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment