Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Квадратное уравнение, Ассемблер (http://www.tehnari.ru/f41/t75262/)

Dianka_i 21.06.2012 20:51

Квадратное уравнение, Ассемблер
 
Доброго времени суток. можете помочь разобраться с кодом?напишите комментарии к коду.. что это значит и что делает? с преподавателем договарилась что если расскажу эту задачу и отвечу на вопросы из билета, то он мне 4 поставит на экзамене без решения экзаменационной задачи.. уж очень не хочу терять стипендию из-за этого предмета =(
Код:

.model small
.data
 
 a dd 2.0
 b dd 4.0
 c dd 2.0
 D dd ?
 
 mes1 db 'No roots! $'
 
 temp dd 4.0
 temp2 dd 2.0
 
.stack 256h
.code
 
;Main PROC
main proc
 
 push @data
 pop ds
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 finit
 
; discriminante
; C++:
; D = sqr(b)-4*a*c
 
 fld b
 fmul b
 fld a
 fld temp
 
 fmul
 fld c
 fmul
 fsubp st(1),st(0)
 fst D
 
; <=>
 ftst
 
 fstsw ax
 sahf
 
 jc j1
 jz j2
 
; D > 0
; X1 = (-b-sqrt(D))/(2*a)
; X2 = (-b+sqrt(D))/(2*a)
 
 finit
 
 fld temp2
 fmul a
 fld D
 fsqrt
 fld b
 fchs
 
 fsave temp2[4]
 frstor temp2[4]
 
 fsubr
 fdivr ; first root
 
 frstor temp2[4]
 
 fadd
 fdivr ; second root
 
 jmp ex
 
; D < 0
; !no roots!
 
j1: mov ah, 09h
 mov dx, offset mes1
 int 21h
 jmp ex
 
; D = 0
; X = -b/(2*a)
 
j2: finit
 fld temp2
 fmul a
 fld b
 fdivr
 fchs ; root
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ex: mov ax, 04C00h
 int 21h
 
main endp
;end of main
 
end main



Часовой пояс GMT +4, время: 05:39.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.