캐리와 오버플로우에 대해서 잘 모르겠습니다..
글쓴이: rapzzard / 작성시간: 토, 2003/04/26 - 11:40오전
8086어셈블리에서..캐리플래그와 오버플로우플래그가 언제 set되는지 애매모호해서 문의드립니다..
제가 알기로 오버플로우는 표현할수있는 최대한의 범위를 넘어섰을때 발생하는걸로 알고 있는데요..그러니까 16비트 레지스터가 있을때..
-2^15~2^15-1까지..그러니까 7FFFH에다가 1을 더하게 되면..
오버플로우가 발생하는걸로 알고 있습니다..
그리고 캐리플래그는 말그대로 연산에서 자리올림이나 자리내림이 발생했을때 발생하는걸로 알고 있는데요..FFFFH에다가 1을 더하는 경우..
근데 만약에 UNSIGNED라고 가정했을때..
부호비트를 안 쓴다면 2^16승까지 표현할수있습니다..
그렇게 되면 FFFFH에다가 1을 더하게 되면 표현할수있는 최대치를 넘어섰으니까..오버플로우와 캐리플래그가 동시에 set되야 하는것 아닌가요?
어셈블리에서 signed와 unsigned의 개념은 프로그래머가 알아서 처리해줘야할거같은데요..그런 경우라면 둘다 세트되야될거같은데 제가 잘못 알고 있는건지..아니면 왜 이렇게 되는지 명확하게 설명해주실분을 찾습니다;;
DEBUG로 테스트해본 결과로는..
7FFFH에 1을 더한 경우에는 OF만 세팅되고..
FFFFH에 1을 더한 경우에는 CF만 세팅되더군요..
Forums:
댓글 달기