PDA

View Full Version : مبتدی: مفهوم پیغام divide overflow و نحوه ی حل این مشکل در برنامه نویسی اسمبلی چیست؟



Z.nasehi
چهارشنبه 11 اردیبهشت 1392, 10:53 صبح
با سلام من یه برنامه کوچیک اسمبلی قرار بنویسم که با گرفتن a و b از خروجی جواب معادله ax+b=0 رو محاسبه کنه. من این کد رو نوشتم اما تو اجرا پیغام divide overflow میده و شدیدا رو اعصابه تا پنج شنبه 12 اردیبهشت هم بیشتر وقت ندارو به دادم برسید.
include io.h
cr EQU 0dh
lf EQU 0ah
stacksg segment 'stack'
db 100h dup(?)
stacksg ends
datasg segment 'data'
prompta db 'Please Enter a:',0
promptb db cr,lf,'Please Enter b:',0
value db 20 dup(?)
lable1 db cr,lf ,'The Result(X) is:'
result db 20 dup(?)
db cr,lf,0
datasg ends
codesg segment 'code '
assume cs:codesg,ds:datasg
main:mov ax,datasg
mov ds,ax
output prompta
inputs value,20
atoi value
mov bx,ax; bx=a
output promptb
inputs value,20
atoi value ; alan ax=b
neg ax; ax=-b
idiv bx; ax=ax/bx => ax=-b/a
itoa result,ax
output lable1
mov ax,4c00h
int 21h
codesg ends
end main

Z.nasehi
چهارشنبه 11 اردیبهشت 1392, 13:25 عصر
و من همچنان منتظر راهنمایی حرفه ای های عزیز هستم!

darknes666
جمعه 20 اردیبهشت 1392, 17:59 عصر
اقا من فکر کنم این باشه.وقتی این اتفاق میفته که مقدار خیلی کوچیک میشه و کامپیوتر نمیتونه اون مقدار رو تشخیص بده.مثلا وقتی 200 بار عدد 1 رو تقسیم بر 2 کنی این اتفاق میفته.البته فکر کنم.