2013-10-23 3 views
0

숙제가 있으므로 숙제의 목적은이 f (x) = x^2 + 2x-3을 계산하는 것입니다. 문제는 결과를 나눌 때 나눗셈 오버플로 오류가 발생하고 그것을 왜 고칠 지 모릅니다. 누구든지 도와 줄 수 있습니까?나누기 오버플로 오류 어셈블리 emu8086

TITLE MYPROGRAM 

DEDOMENA SEGMENT  

protropimsg db "Dwsse arithmo x:",10,13,"$" 
apotelesmamsg db 10,13,"to apotelesma einai",10,13,"$" 
x_number db 0 
tmp1 db 0 
f_result dw 0 
dekada db 0 
monada db 0 

DEDOMENA ENDS 


KODIKAS SEGMENT 

ARXH:MOV AX,DEDOMENA 
MOV DS,AX 

LEA DX,protropimsg 
MOV AH,09 
INT 21h 

MOV AH,01h 
INT 21h 

SUB AH,30h 
MOV x_number,AH 

MOV AH,x_number 
MOV BH,x_number 
ADD AH,BH 
MOV CH,3 
SUB AH,CH 

MOV tmp1,AH 

MOV AL,x_number 
MOV DL,x_number 
MUL DL 

MOV BL,tmp1 
MOV BH,0 
ADD AX,BX 
MOV f_result,AX 

MOV AX,f_result 
MOV BL,10 
DIV BL 
MOV dekada,AL 
MOV monada,AH 

LEA DX,apotelesmamsg 
MOV AH,09 
INT 21h 

MOV DL,dekada 
ADD DL,30h 
MOV AH,02h 
INT 21h 

MOV DL,monada 
ADD DL,30h 
MOV AH,02h 
INT 21h 


MOV AH,4CH  
INT 21H 

KODIKAS ENDS 
END ARXH 
+0

테스트 할 때 'x'에 사용하는 값은 무엇입니까? division overflow는'AX/BL'가 255보다 큰 경우, 즉'f_result> = 2560 '인 경우 얻을 수있는 것입니다. – Michael

+0

x의 값은 사용자가 –

+0

에 의해 주어진다. 그러나 프로그램을 테스트하고 나눗셈 오버 플로우가 발생했을 때 당신은 무엇을 입력 했습니까? – Michael

답변

0

이 잘못된 같습니다

MOV AH,01h 
INT 21h 

SUB AH,30h 
MOV x_number,AH 

인터럽트 21h/AH=01h하지 AH에, AL에있는 문자를 돌려줍니다.

+0

당신을 응원 해주세요 !! 그게 결국 문제 였어 !! 너는 최고야! –