부호, AVR서명 내가 ASM의 지침에 대한 몇 가지 질문이 조립
1) RD, Rr을 추가; Rd와 Rr은 부호없는 번호입니까?
2) 서명 된 numer를 레지스터에로드하는 방법은 무엇입니까? 나는 LDI Rd, K이 (가) unisgned되고 있다는 것을 알고 있습니다.
3) 두 개의 16 비트 숫자를 추가하여 구체적인 예를 나에게 제공 할 수 있습니까? 하나의 숫자가 음수라는 것이 중요합니까?
부호, AVR서명 내가 ASM의 지침에 대한 몇 가지 질문이 조립
1) RD, Rr을 추가; Rd와 Rr은 부호없는 번호입니까?
2) 서명 된 numer를 레지스터에로드하는 방법은 무엇입니까? 나는 LDI Rd, K이 (가) unisgned되고 있다는 것을 알고 있습니다.
3) 두 개의 16 비트 숫자를 추가하여 구체적인 예를 나에게 제공 할 수 있습니까? 하나의 숫자가 음수라는 것이 중요합니까?
2의 보수 연산에 대한 좋은 점은 덧셈과 뺄셈이 피연산자가 서명되었는지 여부에 관계없이 동일하게 작동한다는 점입니다. 피연산자와 결과를 적절히 해석하는 것은 프로그래머의 몫입니다. 그러나 오버 플로우 감지는 다릅니다.
12345
및 -10
을 추가합니다. 12345
은 0x3039
이고 -10
은 0xfff6
입니다. 먼저 낮은 바이트를 추가 한 다음 첫 번째 연산에서 올림으로 높은 바이트를 추가합니다.
LDI R16, 0x39 ; low byte of 12345
LDI R17, 0x30 ; high byte of 12345
LDI R18, 0xf6 ; low byte of -10
LDI R19, 0xff ; high byte of -10
ADD R16, R18 ; add low bytes without carry
; R16 is now 0x39 + 0xf6 = 0x2f and carry is 1
ADC R17, R19 ; add high bytes and the carry
; R17 is now 0x30 + 0xff + 0x01 = 0x30
그래서 결과 12335
하고 예상 값 0x302f
이다. 이제 초기 -10
이 부호가없는 번호 65526
으로 간주 될 수 있습니다. 결과는 변경되지 않고 그대로 유지되지만이 경우 오버플로가 발생합니다.
약 2's complement on wikipedia을 읽을 수 있습니다.
내가 잘못하면 번호 12345 (0x3039)에 서명 되었습니까? – user16401
서명과 서명 모두 동일합니다. 16 비트에서 '0'에서 '0x7fff'('32767')까지의 숫자, 즉 음수가 아닌 부호가있는 숫자는 부호가 있고 부호가없는 표현이 동일합니다. – Jester