LJMP start ORG 03h SJMP end ORG 20h start: MOV R0,#255 ;licznik bitow MOV R1,#255 ;licznik B MOV R2,#0 ;licznik 0,25 kB MOV R3,#0 ;licznik kB MOV DPTR,#adr_ERAM CLR A MOV B,A ;kopia zapasowa A petla: PUSH DPH ;zapamietuje adres w pamieci zewnetrznej RAM PUSH DPL ;gdzie kopiuje string MOV DPTR,#tab_zn ;wpisuje adres stringu do DPTR MOVC A,@A+DPTR ;kopiuje wskazany bajt z EPROM do A JZ end ;nie przepisuje 0 do ERAM POP DPL ;zdejmuje adres w pamieci ERAM ze stosu POP DPH ; i wpisuje go do DPTR MOVX @DPTR,A ;kopiuje z A do pamieci zewnetrznej ERAM INC B ;nastepny adres EPROM (kolejna litera) MOV A,B INC DPTR ;kolejny adres w pamieci ERAM DJNZ R0,petla ;zmniejsza licznik bitow o 1 gdy R0=0 -> string=1B MOV R0,#255 ;1B=256 bitow DJNZ R1,petla ;zmniejsza licznik bajtow o 1 gdy R1=0 -> string=256B MOV R1,#255 INC R2 CJNE R2,#4,petla ;4*256B=1024B=1kB INC R3 CJNE R3,#obszar_pam,petla SJMP alarm end: SJMP $ ORG 60h tab_zn: DB 'Kot ma Ale' ;wpisuje lancuch znakow do EPROM DB 0 ;konczy string '0' adr_ERAM EQU 10h ;deklaracja stalej adr_ERAM i wpisanie do niej adresu pam zewn ERAM obszar_pam EQU 2 ;deklaracja stalej obszar_pam - rozmiar pamieci zewnetrznej w kB alarm: SJMP $ END