START의 비트 7에서 비트 위치를 변경하는 작업을 가지고 | 비트 6 | bit5 | bit4 | 비트 3 | 비트 2 | 비트 1 | 비트 0
최종 비트 3 '| bit2 '| 비트 7 | 비트 6 | 비트 1 | bit0 | bit5 '| bit4 '
비트 및 시프트/롤링 명령어 사용.
이동 및 롤링과 다른 방식으로 이동하는 방법을 모르겠습니다. 하나 또는 여러 개의 레지스터 만 사용해야합니까?
START의 비트 7에서 비트 위치를 변경하는 작업을 가지고 | 비트 6 | bit5 | bit4 | 비트 3 | 비트 2 | 비트 1 | 비트 0
최종 비트 3 '| bit2 '| 비트 7 | 비트 6 | 비트 1 | bit0 | bit5 '| bit4 '
비트 및 시프트/롤링 명령어 사용.
이동 및 롤링과 다른 방식으로 이동하는 방법을 모르겠습니다. 하나 또는 여러 개의 레지스터 만 사용해야합니까?
shift와 rol를 사용하면 두 개의 레지스터로 처리 할 수있어 진행 과정에서 원본을 낭비해야합니다.
오른쪽으로 지우는 것 을 복사하십시오. 왼쪽으로 조금씩 옮깁니다. B를 오른쪽으로 옮겨서 이동 을 복사하여 해당 비트를 B 레지스터에 넣고 LSB를 옮깁니다.
1 - ROR A,A,1 // A = _7654321, --> carry = '0'
2 - ROR B,B,1 // B = 0_______, --> carry = 'x'/don't care
3 - ROR A,A,1 // A = x_765432, --> carry = '1'
4 - ROR B,B,1 // B = 10______, --> carry = 'x'/don't care
// this has copied two bits from A to B while shifting both
5 - ROR B,B,1 // B = x10_____,
6 - ROR B,B,1 // B = xx10____,
repeat steps 1-4 again for B to contain bits '3 2 _ _ 1 0 _ _'
의 시퀀스
(그리고이 용액의 절반)
고맙습니다. – knowbody
무엇 프로세서 것이 있습니까? 이렇게하는 방법은 사용 가능한 지침에 따라 크게 다릅니다. http://programming.sirrida.de/calcperm.php에서이 내용을 채우는 것은 4 개의 2 개 그룹으로 비트를 이동하는 것을 의미합니다. 이는 의미가 있습니다. – harold
ATmega8535 용 – knowbody
ldi r16, $ F0; 값은 F0에서 r16까지입니다. 그리고 나서 나는 'lsl', 'lsr'등과 같은 명령을 사용하고있었습니다. – knowbody