Unterprogramme An mehreren Stellen im Programm stehen gleiche Codeabschnitte!! 0000h 0200h...

Preview:

Citation preview

UnterprogrammeUnterprogramme

An mehreren Stellen im Programm stehen gleiche Codeabschnitte!!

0000h

0200h

Programmspeicher

Problem• Langes Programm

• Programm unübersichtlich

UP

0000h

0200h

Programmspeicher

CALL UP3.

Auf

ruf

CALL UP2.

Auf

ruf

CALL UP

1. A

ufru

f

UnterprogrammeUnterprogramme

0100h

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0000h0000hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0002h0002hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0002h0002hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0004h0004hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0004h0004hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0007h0007hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

07h07h08h08h 0Fh0Dh0Ch0Bh0Ah09h08h07h BOS06h05h04h03h02h01h00h (R0)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0007h0007hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah09h08h TOS07h BOS06h05h04h03h02h01h00h (R0)

Stackpointer (SP)Stackpointer (SP)

0040h0040h

0Fh0Dh0Ch0Bh0Ah09h TOS08h07h BOS06h05h04h03h02h01h00h (R0)

09h09h

00h07h

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0040h0040hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0040h0040hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h

5 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0042h0042hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h

5 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0042h0042hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h

5 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0042h0042hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

43210

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0044h0044hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0044h0044hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

00

0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h TOS

07h BOS06h05h04h03h02h01h

0 00h (R0)

08h08h07h07h 0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)07

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0007h0007hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0008h0008hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0008h0008hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

000Ah000AhPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

000Ah000AhPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

000Dh000DhPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

0Fh0Dh0Ch0Bh0Ah

00h 09h07h 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

0Fh0Dh0Ch0Bh0Ah09h08h TOS07h BOS06h05h04h03h02h01h

0 00h (R0)

0Fh0Dh0Ch0Bh0Ah09h TOS08h07h BOS06h05h04h03h02h01h

0 00h (R0)000Dh000Dh0040h0040h

07h07h08h08h

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

PCPC

internes RAMinternes RAMStackpointer (SP)Stackpointer (SP)09h09h

00h0Dh

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0040h0040hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0040h0040hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h

5 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0042h0042hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h

5 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0042h0042hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h

5 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0042h0042hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

43210

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0044h0044hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

09h09hStackpointer (SP)Stackpointer (SP)

0Fh0Dh0Ch0Bh0Ah

00h 09h TOS0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

0Fh0Dh0Ch0Bh0Ah

00h 09h0Dh 08h TOS

07h BOS06h05h04h03h02h01h

0 00h (R0)

0Fh0Dh0Ch0Bh0Ah

00h 09h0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0044h0044hPCPC

internes RAMinternes RAM09h09h

Stackpointer (SP)Stackpointer (SP)

00

08h08h07h07h

0D

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

000Dh000DhPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0000h0000hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

BeispielBeispiel

ret 0044hWait: djnz R0,Wait 0042hZeit: mov R0,#5 0040h

••••

jump Start 000Dhcall Zeit 000Ahmov p2,a 0008hcpl a 0007hcall Zeit 0004hmov p2,a 0002h

Start: mov a,p1 0000h

Programmspeicher

(internes Flash-ROM)

Programmspeicher

(internes Flash-ROM)

0000h0000hPCPC

internes RAMinternes RAM0Fh0Dh0Ch0Bh0Ah

00h 09h0Dh 08h

07h BOS06h05h04h03h02h01h

0 00h (R0)

07h07hStackpointer (SP)Stackpointer (SP)

Recommended