mehdi_pink_63
سه شنبه 30 آذر 1389, 18:51 عصر
سلام من دارم برای یک میکرو برنامه آماده می کنیم  نیاز دارم که سینوس یک عدد تولید شده را محاسبه کنم حالا نیاز به راهنمایی دارم ورودی هم باید به گرادیان تبدیل کنم تا بشه سینوسش را حساب کنم نمی دونم از کجا شوع کنم:متفکر:
xman_1365_x
سه شنبه 30 آذر 1389, 21:03 عصر
از جستجو در فروم! (قبلا جواب داده شده)
mehdi_pink_63
سه شنبه 30 آذر 1389, 22:35 عصر
غیر از روش تیلور چیزی پیدا نکردم:متفکر:
xman_1365_x
چهارشنبه 01 دی 1389, 19:38 عصر
خوب بيشتر بگرد تا پيدا كني 
masm32 هم نصب كن بعد برو به مسير C:\masm32\fpulib
موفق باشي
mehdi_pink_63
پنج شنبه 02 دی 1389, 13:42 عصر
خیلی گشتم ولی چیزی پیدا نکردم به قول شاعر می گه گشتم نبود نگرد نیست:بامزه:
xman_1365_x
پنج شنبه 02 دی 1389, 14:29 عصر
توابع آماده masm هم ديدي؟ براي بيشتر كار هاي رياضي رو داره!
منجمله سينوس كه شما نياز داري
mehdi_pink_63
جمعه 03 دی 1389, 12:06 عصر
سلام من خودم دست به کار شدم والان قسمت دریافت رشته و تبدیل به عدد را نوشتم حالا مشکلم اینکه باید عدد را به گرادیان تبدیل کنم با فرمول x*p/180 اگر اشتباه نکرده باشم کسی می تونه این فرمول را دربرنامه زیر قرار بده آخه متن را درون یک پشته میریزه ممنون
datasg   segment  para  'code'
msg1      db      'Enter a number Sin:',"$"
msg2      db      'The result number is:',"$"
count     db      0
sign      dw      ?
string    db      6 dup(' '),"$"
sign1     db      ?
strlist   label   byte   ;start of parameter list
 max      db      20
 len      db      ?
 buffer   db      20 dup(' ')
dolar     db      '$'
datasg    ends
codesg        segment  para  'code'
main          proc     far 
              assume   ds:datasg, cs:codesg
              mov      ax, datasg
              mov      ds, ax
              mov      ah, 6h   ;clear screen
              mov      al, 25   ;number of rows
              mov      ch, 0
              mov      cl, 0
              mov      dh, 24   ;row
              mov      dl, 79   ;column
              mov      bh, 7    ;attribute
              int      10h
              mov      ah, 2h   ;cursor move
              mov      dh, 10   ;row
              mov      dl, 30   ;column
              mov      bh, 0    ;page number
              int      10h
              lea      dx, msg1  ; print message
              mov      ah, 9h
              int      21h
              mov      ah, 0ah    ; read string
              lea      dx, strlist
              int      21h
              lea      bx, buffer
while_blank:  cmp      byte ptr [bx], ' '        ; skip leading blank
              jne      end_while_blank   ; exit while
              inc      bx
              jmp      while_blank
end_while_blank:
              mov      sign, 1               ;default sign multiplier
              cmp      byte ptr [bx], '+'  ;leadin + ?
              je       skip_sign           ;if so skip over
              cmp      byte ptr [bx], '-'  ;leading - ?
              jne      save_sign           ;if not save default +
              mov      sign, -1              ;-1 for minus sign
skip_sign:    inc      bx                  ;past sign
save_sign:    mov      ax, 0               ;number being accumulated
              mov      count, 0            ;count of digits so far
while_digit:  cmp      byte ptr [bx], '0'  ;compare next car to '0'
              jl       end_while_digit     ;if not a digit exit
              cmp      byte ptr [bx], '9'  ;compare to '9'
              jg       end_while_digit     ;not a digit if bigger than '9'
              mov      cx, 10              ;multiplier
              mul      cx                  ;multiply old number by 10
           ;   jo       overflow            ;exit if product is too large
              mov      cl, [bx]            ;mov ascii char to bl
              and      cx, 000fh           ;convert to single digit integer
              add      ax, cx              ;add to sum
           ;   jc       overflow            ;exit if sum too large
              inc      count               ;increment digit count
              inc      bx                  ;increment character pointer
              jmp      while_digit         ;go next char
end_while_digit:
          ;    cmp      count, 0            ;no digit ?
          ;    jz       overflow            ;if so, set overflow error flag
               imul      sign
;;;;;;;;;;;;;convert number in ax to string;;;;;;;;;;;;
              lea      bx, string
              add      bx, 5
              mov      sign, ' '
              cmp      ax, 0
              jge      setup         ; skip if not negative
              mov      sign1, '-'
              neg      ax            ; now ax > 0
setup:        mov      cx, 10        ; divisor
divloop:      mov      dx, 0         ; extend number to double word
              div      cx            ; divide by 10
              add      dl, 30h       ; convert
              mov      [bx], dl
              dec      bx
              cmp      ax, 0
              jne      divloop
              mov      cl, sign1      ; insert sign to string
              mov      [bx], cl
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ;Convert number to gradeints
              
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              mov      ah, 2h   ;cursor move
              mov      dh, 12   ;row
              mov      dl, 30   ;column
              mov      bh, 0    ;page number
              int      10h
             ; print result
              lea      dx, msg2 ;print the message
              mov      ah, 9h
              int      21h
              lea      dx, string   ;print the string number
              mov      ah, 9h
              int      21h
         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              mov      ax, 4c00h
              int      21h
main          endp
codesg        ends
              end      main
xman_1365_x
جمعه 03 دی 1389, 16:02 عصر
اولا گرادیان يك چيز ديگست
http://fa.wikipedia.org/wiki/%DA%AF%D8%B1%D8%A7%D8%AF%DB%8C%D8%A7%D9%86
براي محاسبه راديان و درجه
http://fa.wikipedia.org/wiki/%D8%B1%D8%A7%D8%AF%DB%8C%D8%A7%D9%86
عدد پي
http://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF_%D9%BE%DB%8C
كاري نداره كه بنويس مشكل فقط اينه داري از كد هاي 16 بيتي استفاده ميكني محاسبات اعشاري هست كمي ازيت ميشي،چون در اين نوع پردازنده ثباتي براي كار با اعداد اعشاري نداريم.
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
mehdi_pink_63
جمعه 03 دی 1389, 17:44 عصر
با تشکر منظورم همون رادیان بود x*3.14/180 بله شما درست می فرمایید
xman_1365_x
جمعه 03 دی 1389, 21:23 عصر
در مورد تبدیل به نماد علمی اگه نمی دونی تحقیق کن تا بتونی ذخیره کنیش
موفق باشی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.