al
의 결과 1111 1111
베이스 (2) 인 등의 케이스에 맞지 않는다 8 비트가 1로 설정 됨).
은 부호가없는 8 비트 값으로으로 해석하면 255 = FFh
입니다.
부호가 8 비트 값인으로 해석하면 -1 = -1h
입니다.
당신이 볼 수 있듯이 al
의 값은 정보가 없습니다. 부호가 있거나 부호없는 값인 경우에는 8 비트입니다. 논리적 인 의미와 유형은 코드에 의해 주어 지는데, 이것은 8 비트를 확실하게 해석합니다.
CF는 부호없는 수학과 관련되어 있으며 116-117은 부호없는 범위를 벗어나는 (가능한 모든 비트 크기에 대해 0부터 시작하는) "1보다 작습니다."입니다.
시트에 무엇을 써야할지 모르겠다. 아마 -1인데, 그 결과는 십진수이며 실제로는 (부호없는) 8 비트의 범위를 초과합니다.그런 다음 다시 부호없는 컴퓨터 수학 0-1에서 256 (또는 다른 비트 크기에 대해 다른 2의 제곱)을 감싸는 것처럼 8 비트 값에 대해 255가 분명합니다 (8 비트 수학은 그룹 256이거나 대수에서 호출되는 방식입니다. 0-1을하면 잘 정의되고 결과는 단순히 "255"입니다).
거기에 255
을 쓰면 그 제안 된 문장에 당황 스럽습니다. 그게 정확한 결과이지만, 그것은 부호없는 8 비트에 잘 맞습니다. 부호있는 8 비트 값의 범위를 초과합니다 (최대 +127). 그러나 부호있는 8 비트 값을 사용하면 결과는 -1
이 8 비트에 맞습니다.이 말이 부정확하게 말하면 예상되는 답변이 확실하지 않습니다. CF는 0 - 1 = 255이므로 (→ CF = 1로 감싸지 만) 255는 8 비트에 맞습니다. 그 정도로 정확합니다.
OF 부호 관련 수학. 부호있는 수학이 오버플로되면 설정됩니다. 116 + -117을 할 때, 그것은 양수 + 음수 값입니다. 두 소스 값은 이미 8 비트 부호 범위 (-128 .. + 127) 내에있었습니다. 그런 다음 양수를 음수로 추가하면 원래 값 사이에 값이 생길 수 있습니다. 그것이 그들 사이에 있다면, 그것은 반드시 합법적 인 8 비트 부호있는 값이 될 것이므로 오버 플로우가 전혀 발생하지 않을 것입니다.
두 개의 음수 값 또는 두 개의 양수 값을 더하면 오버플로가 발생할 수 있습니다. 그런 다음 결과에 소스 값과 다른 부호가 있으면 오버 플로우가 발생합니다 (OF = 1). 나는. 긍정 + 긍정의 음성 결과는 OF = 1이고 음성 + 음성의 긍정적/제로 결과는 OF = 1입니다. 다른 모든 조합은 OF = 0입니다.
이 특별한 경우에, 116 + -117 = -1 →은 모두 문제없이 8 비트 부호있는 값에 맞습니다. OF = 0.
SF는 부호없는 8 비트 값 0..127이 부호있는 8 비트에서 동일한 방식으로 해석되기 때문에 결과의 최상위 비트이지만 128..255는 부호있는 8 비트에서 -128 ..- 1로 해석됩니다 여기서 최상위 비트는 음수 값 신호이며, 값은 - (256 - unsigned_8b_value)와 같을 수 있습니다. 하여 예에서 - (256 - 255) = -1, 및 상부 최 좌측, 하나의 부호화 값 2 7 = 128)
당신이었다 = 11111111 (의 SF는 = 1 (상위 비트. 이전 질문에서 http://teaching.idallen.com/dat2343/10f/notes/040_overflow.txt으로 이미 제공되었는데, 모두 아주 잘 설명되어 있습니까?
왜 결과가 0이 될 수 없습니까? 'al'이 '1'이면 결과는 0이됩니다. – Ped7g
'OF'는 부호있는 산술을위한 것이며, '116-117 = -1'이고 범위가 범위 내에 있으므로'OF '가 0입니다. 또한 음수이므로'SF '가 켜져 있지만 부호가없는 범위에 없습니다 (분명히) 그래서'CF'가 켜져 있습니다. – Jester
@ Ped7g하지만 결과는 -1입니다. 그래서 어떻게해야합니까? t는 0일까요? – eitanmayer