рдкрд╛рд▓реА, рд╕рдВрдХреЗрдд рдФрд░ рдЧрддрд┐ рдПрдордХреЗ рдХреЗ рдореБрджреНрджреЗ рдкрд░

"рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдг рдЦреЛрдЬреЗрдВ рдФрд░ рдЖрдк рдмрд╣реБрдд рдХреБрдЫ рд╕рдордЭреЗрдВрдЧреЗ"


рд╢рд╛рдпрдж рдореЗрд░реЗ рдирд┐рдпрдорд┐рдд рдкрд╛рдардХреЛрдВ (рдареАрдХ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рддреЗ) рдХрд┐ рдореЗрд░реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рд╣реИрд░рд╛рди рдерд╛ рдХрд┐ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдмрджрд▓рд╛рд╡ рдкрд╛рд▓реА рдХреЗ рджреМрд░рд╛рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореИрдВ рд╕рд╣рдордд рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЦреЛрдЬрд╛ рд╣реИ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╣реИ рдФрд░ рдЗрд╕реЗ рди рдХреЗрд╡рд▓ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ, рд╣рдо рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд▓реЛрд╣реЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкрд░рд┐рдЪрдп
рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдмреИрдЯрд░реА рдХреЗ рдмрд┐рдирд╛ 8-рдмрд┐рдЯ рдПрдордХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ (рдпрд╣ рд╕рдордЭреМрддрд╛ рдирд╛рдо AVR рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рдРрд╕рд╛ рджрдпрдиреАрдп рдкреНрд░рдпрд╛рд╕ рд╣реИ), рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрдорд╛рдВрдб рд╣реИрдВ:

lsl / lsr рд▓реЙрдЬрд┐рдХрд▓ рд▓реЗрдлреНрдЯ / рд░рд╛рдЗрдЯ рд╢рд┐рдлреНрдЯ, рд▓реЛ / рд╣рд╛рдИ рдмрд┐рдЯ рдХреНрд▓рд┐рдпрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ;
rol / ror рдЪрдХреНрд░реАрдп рдЫреЛрдбрд╝ рджрд┐рдпрд╛ / рд╕рд╣реА рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрджрд▓рд╛рд╡ (рд╢рд┐рдлреНрдЯ 9 рдмрд┐рдЯреНрд╕);
asr рдЕрдВрдХрдЧрдгрд┐рддреАрдп рджрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг (рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд) рдмрд┐рдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ (рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рдИрдВ рдУрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реИ)ред

рдЗрди рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдмрд╛рдЗрдЯ рдСрдкрд░реИрдВрдб рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╢рдмреНрдж рд╢рд┐рдлреНрдЯ (2 рдмрд╛рдЗрдЯреНрд╕ рдЖрд░рдПрдЪ, рдЖрд░рдПрд▓) рдЬрд┐рд╕рдореЗрдВ 1 рдЕрдВрдХ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдПрдХ рд╕рдВрдХреЗрдд рдирд┐рдореНрди рдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

asr rh; ror rl;

рдПрдХ рд╕рд░рд▓ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдФрд░ AVR рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде MK рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрдд рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ godbolt.org рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред (рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдЪрд░ r24 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ)

int8_t byte; byte = byte << 1; 

 clr r25 sbrc r24,7 com r25 lsl r24 rol r25 

рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдкрд╛рдБрдЪ рдЯреАрдореЗрдВ рд▓рдЧрддреА рд╣реИрдВ?

рдиреЛрдЯ: рдпрджрд┐ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЦрдВрдб (рдФрд░ рдмрд╛рдж рд╡рд╛рд▓реЗ) рдХреЛ 2 рдХреЙрд▓рдо рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рдпрд╣ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдЗрдЯ рдЪрд░ рдкрд╣рд▓реЗ рддреАрди рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ (16-рдмрд┐рдЯ) рдкреНрд░рдХрд╛рд░ рддрдХ рдлреИрд▓рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реЗ рджреЛ рдореЗрдВ, рдбрдмрд▓-рдмрд╛рдЗрдЯ рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрдо рд╕реЗ рдХрдо рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реИред

рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ

 byte = byte >> 1; clr r25 sbrc r24,7 com r25 asr r25 ror r24 

- рд╡рд╣реА рдкрд╛рдВрдЪ рдЯреАрдореЗрдВред рдЗрд╕ рдмреАрдЪ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдВрддрд┐рдо рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╣реА рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

 sr r24 

рдФрд░ рдкрд╣рд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдФрд░ рдирд╣реАрдВред рдореИрдВрдиреЗ рдмрд╛рд░-рдмрд╛рд░ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЛрдб рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рднреА рдмрджрддрд░ рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдПрдЖрд░рдПрдо рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдерд╛), рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЙрд╕реЗ рдереЛрдбрд╝реА рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЪрд╛рдирдХ рдРрд╕реЗ рдмрдорд░ред рд▓реЗрдХрд┐рди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рд╣реА рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдЯрд╛рдЗрдк рдорд┐рдХреНрд╕ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реЛ рдФрд░ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ

 byte = byte >> (int8_t) 1; 

- "рдкреВрд░реА рддрд░рд╣ рд╕реЗ" рд╢рдмреНрдж рд╕реЗ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ

  byte=(uint8_t) byte >> 1; 

рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ

 ldi r25,lo8(0) asr r25 ror r24 

- рддреАрди рдЯреАрдореЗрдВ, рдЪреВрдВрдХрд┐ рдкреВрд░реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдм рдПрдХ рд╣реА рдЯреАрдо рд░рд╣рддреА рд╣реИ - рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╣реА рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП

 byte=(uint8_t) byte << 1; 

- рддреАрди рдЯреАрдореЗрдВред рдареАрдХ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рддрд┐рдпреЛрдВ рдХреЛ рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЪрд░ рдХреЛ рдмрд┐рдирд╛ рдмрддрд╛рдП рдмрдирд╛рддреЗ рд╣реИрдВ

 uint8_t byteu; 

рдФрд░ рдмрд┐рдВрдЧреЛ - рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ

 byteu = byteu << 1; lsr r24 

рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ, рдПрдХ рдЪрд░ рдХреЗ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЛ рддреБрд░рдВрдд рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЗрд╕реЗ рд╕реАрдзреЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП - рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдВрддрд░ рд╣реИред

рдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрдиреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐

 byteu = byte << 1; 

рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреНрдпреВрдирддрдо рдХреЛрдб, рдФрд░ рд╡рд┐рдХрд▓реНрдк рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ

 byte = byteu << 1; 

рддреАрди рдЯреАрдореЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдирдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдЬреЛ рдХрдореЗрдВрдЯрд░реА рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдореИрдВ рдЧрд░реНрд╡ рд╕реЗ рдШреЛрд╖рдгрд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ "рдЪреБрдЪреНрдЪреА рдПрдХ рдкрд╛рдардХ рдирд╣реАрдВ рд╣реИ" рдФрд░ рдореИрдВ рдХрд╣рд╛рдиреА рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрджрдо рд╕реЗ рджрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА - рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, 3 рдЯреАрдореЗрдВ рдереАрдВ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗред рдЬреЛ рдХрд┐ 5 рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣реИ) рдФрд░ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди рдЙрд╕рдХреЗ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдмрд┐рдЯ рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд▓рд╛рдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдорд╛рдорд▓рд╛ рд╣реИ), рддреЛ рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд░реЗрдВрдЧреЗред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЪрд▓реЛ рдкрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрдм рдмрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ: << 1 1 рдШрдбрд╝реА рдЪрдХреНрд░ рд▓реЗрддрд╛ рд╣реИ, << 2 - 2, << 3 - 3, 4 - 2 рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдХрдВрдкрд╛рдЗрд▓рд░ рдиреЗ рдкреЗрдЪреАрджрд╛ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛

 swap r24 andi r24,lo8(-16) 

рдЬрд╣рд╛рдБ s WAP рдХрдорд╛рдВрдб рдмрд╛рдЗрдЯ рдореЗрдВ рджреЛ рдирд┐рдмрд▓реНрд╕ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрддрд┐рдо рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ << 5 - 3, << 6 - 4, << 7 - 3 рдлрд┐рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдФрд░ рдЕрдиреБрдХреВрд▓рди рд╣реИ

 ror r24 clr r24 ror r24 

рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, << 8 - 0 рдЙрдкрд╛рдп, рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ 0 рдирд┐рдХрд▓рд╛ рд╣реИ, рдЖрдЧреЗ рджреЗрдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рд╣реИ - рдЖрдк рдХрд┐рд╕ рдиреНрдпреВрдирддрдо рд╕рдордп рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 uint16_t byteu; byteu = byteu << 4; 

рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж 0x1234 рд╕реЗ 0x2340 рд╣реИред рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди 4 рдмрд╛рд░ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИ

 lsl rl rol rh 

4 * 2 = 8 рдЙрдкрд╛рдпреЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЖрдпрд╛

 swap rl ; 1243 swap rh ; 2143 andi rh,0xf0 ; 2043 mov tmp,rl andi tmp,0x0f or rh,tmp ; 2343 andi rl,0xf0 ; 2340 

рдЬрд┐рд╕рдореЗрдВ 7 рдЙрдкрд╛рдпреЛрдВ рдФрд░ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ 6 рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдХреВрд▓, рдпрд╕ред

рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рдЫрд┐рдкрд╛рддрд╛ рд╣реВрдВ - рдЦреБрдж рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред
рд╕рдВрдХреЗрдд: рдПрдордХреЗ рдХрдорд╛рдВрдб рд╕реЗрдЯ рдореЗрдВ рдПрдХ EXCLUSIVE OR рдХрдорд╛рдВрдб рдпрд╛ рдПрдХ TOTAL AMOUNT TWO eor рд╣реИ

рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рдпрд╣ рдЕрджреНрднреБрдд рдХреЛрдб
 swap rl ; 1243 swap rh ; 2143 andi rh,0xf0 ; 2043 eor rh,rl ; 6343 andi r2l,0xf0 ; 6340 eor rh,rl ; 2340 


рдореБрдЭреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рд╕рд┐рд░реНрдл рд╕реМрдВрджрд░реНрдп рдХрд╛ рдЖрдирдВрдж рдорд┐рд▓рддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, 16-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдФрд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рддрд░рд╣ рдЕрдЬреАрдм рд╣реИред

рдЖрдЗрдП рдЕрдкрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдмрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5 рдШрдбрд╝реА рдЪрдХреНрд░ рд╣реИрдВ, рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП - 3 рдФрд░ рдпрд╣ рд╕рдордп рдХрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рд╕рдм рдПрдХ рд╣реА, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рд╛рдБ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рддрд░реАрдХрд╛ рд╣реИ (рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдЬреАрд╕реАрд╕реА рдЪрд╛рд▓реВ - "рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдЬрдЧрд╣ рд╣реИ"), рдЕрд░реНрдерд╛рддреН

 byteu = (byteu >> 1) & 0x7F; 

рдЬреЛ рд╕рд╛рдЗрди рдХреЗ рджреЛрдиреЛрдВ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдХрдорд╛рдВрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреБрдХреНрдд рдФрд░ рд╡рд┐рдХрд▓реНрдк

  byteu = (byteu & 0xFE) >> 1; 

рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдФрд░ рднреА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - 7 рдЙрдкрд╛рдп, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд╛рд░реА рдХреЗ рдмрд╛рдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЧреБрдгрди (рдФрд░) рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ (рдФрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдФрд░ рдСрдкрд░реЗрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╢рд┐рдлреНрдЯ рдХреЗ рдХреЛрдб рдХреЛ рд╣реА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред "рдЖрдк рдЧреЛрдлрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ - рдирд╣реАрдВ - рдФрд░ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рд╣реИред"

2 рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╢рд┐рдлреНрдЯреНрд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рд╛рдЗрди рдмрд┐рдЯ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдЦреНрдпрд╛ рд╢реБрд░реВ рдореЗрдВ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХреБрдЫ рдХрдЪрд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, "рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ," рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдлрд┐рд░ рднреА, рдпрд╣ рдХрд╣рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реНрдб рдФрд░ рдореЗрдореЛрд░реА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрд┐рдирд╛ рдмрддрд╛рдП рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдЖрдкрдХреЛ рдХрдИ рдСрдкрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд┐рдлреНрдЯ рдпрд╛ рдПрдХ рдорд╛рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░) рддреЗрдЬреА рд╕реЗ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛, рдЬрдм рддрдХ рдЕрдиреНрдпрдерд╛ (рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛) рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

Source: https://habr.com/ru/post/hi436956/


All Articles