2012-08-27 4 views
0

어셈블리에서 간단한 나누기를 시도하지만 "오버플로 나누기"오류가 발생합니다.8086 어셈블리 - 오버플로 나누기

내 간단한 코드 : cs : sum 및 cs : num은 바이트 변수입니다. (dB)

mov ax, word ptr cs:sum 
mov cl, 10 
xor dx,dx 
div cl ; divide by 10 
mov cs:num, ah ; ger rightest 

하지 왜해야합니다 -하지만 내가 말하는대로 - 내가 제대로으로 나눔 실패합니다.

그런 문제가 무엇인지 어떻게 해결할 수 있는지 알고 계십니까? 감사 !

(즉 TSR 프로그램이기 때문에 내가 CS를 존중를 사용하고 있습니다)이 들어

+4

TSR? 박물관 전시를 위해 뭔가를하고 있습니까? –

+1

어셈블리를 전혀 사용하지 않습니다. 나는 시험 준비 중이다 .. \ – iLoveC

답변

4

는 분할 예외

mov ax, word ptr cs:sum 
mov cl, 10 
div cl 

(word ptr cs:sum에서 오는) ax의 값이> = 2560이어야를 일으킬 수 있습니다.

word ptr cs:sum이 < 2560이 아니거나 코드에서 주소가 깨져 있고 word ptr cs:sum에 값을 저장하지 않았거나 거기에서 가져 오지 않았습니다 (예 : sam을 사용하지 않는 경우). e 세그먼트 값 sum 참조).

그 가능성이 있습니다.

+0

나는 이미 그것을 풀었다. 당신의 대답이 최고이기 때문에 나는이 대답을 받아 들일만큼 노래 할 것입니다. 고맙습니다. BTW - C FTW !! – iLoveC

관련 문제