OK thank you.... Yes , I use atmelStudio 6
now i solved my problem
first i set an assembly name to screen_pattern[] :
const unsigned char screen_Pattern[8*8] asm("sc_p") PROGMEM = {
67,20,0,11,0,125,255,13,
10,20,0,0,0,125,255,13,
10,20,115,90,0,125,255,13,
10,20,0,0,0,125,255,13,
10,47,0,0,0,125,255,13,
10,120,0,80,0,125,255,13,
10,200,0,0,0,125,255,13,
10,20,0,127,0,125,255,13
};
then use this codes :
asm ("PUSH R16 ");
asm ("PUSH R30 ");
asm ("PUSH R31 ");
// Z Register is ( R31:R30)
asm ("LDI r30,lo8(sc_p)"); // R30 = LOW(sc_P)
asm ("LDI r31,hi8(sc_p)"); // R31 = HIGH(sc_P)
asm ("LPM R16 , Z "); // LPM (Load program memory) R16 = [Z] Z = first cell of screen_Pattern[]
asm ("OUT 0x12 , R16 "); // 0x12 is address of PORTD ; PORTD=R16
asm ("POP R31 ");
asm ("POP R30 ");
asm ("POP R16 ");