Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2009, 22:22   #1
maziLa
Пользователь
 
Регистрация: 08.12.2008
Сообщений: 30
По умолчанию Ассемблер

Код:
page  80,120     

sseg     segment  stack 'stack'                            
           db 128 dup(?)                           
sseg     ends                                              

dseg     segment 'data'                       
   text1   db    'Program started',13,10,'$'  
   text2   db    '((-(b*b*d*d))+(b*b*c*c)/(a*c*a*c))+9 = $'              
   A       db    0Ch                       
   B       db    0FAh                        
   C       db    0Dh                         
   D       db    0F9h                                
   RESS     db    ?
   PROM1   dw    ?                          
   PROM2   db    ?
   PROM3   dw    ?
dseg     ends                                      

cseg     segment 'code'                                  
            assume  cs:cseg, ds:dseg, ss:sseg    
                            
  start proc far                              
          mov   ax, dseg                      
          mov   ds, ax                        
     m1:  lea   dx, text1         
                                  
          call  WrStr          
          mov   dx, offset text2 
                                  
          call  WrStr          

     m2:     mov al, A
	imul byte ptr C
            	mul al
	mov PROM1 , ax
	mov al , B
	imul byte ptr B
	mov PROM2 , al
	mov al , D
	imul byte ptr D
	mul byte ptr PROM2
	neg ax
	mov PROM3 , ax
	mov al , C
	mul byte ptr PROM2
	add ax , PROM3
	cwd
	div word ptr PROM1
	add ax , 0009h
	mov RESS , al
    m3:      mov   dl, al              
                add   dl, 30h             
                mov   ah, 02h             
                int   21h         
    m4:      mov   ah, 4Ch             
                int   21h                 
  start  endp                       

  WrStr  proc near                             
             mov   ah,09h                    
             int   21h                       
             ret                             
  WrStr  endp                             

cseg     ends                                  
             end   start
((-(b*b*d*d))+(b*b*c*c)/(a*c*a*c))+9 -- вот собственно задание
ошибка : переполнения деления
Ребята знаете в чём ошибка помогите
PS.дело ещё том что я вывожу(должен выводить) только целую часть но есть ещё и дробная, я незнаю как её вывести...
maziLa вне форума Ответить с цитированием
Старый 06.07.2009, 08:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
maziLa
FPU пользоваться разрешено по заданию?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.07.2009, 09:25   #3
maziLa
Пользователь
 
Регистрация: 08.12.2008
Сообщений: 30
По умолчанию

Об этом даже ничего не сказано =), думаю можно
maziLa вне форума Ответить с цитированием
Старый 06.07.2009, 10:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда предлагаю такой вот каркас:
Код:
	.386
	.model flat,stdcall
	option casemap:none
.data
;_______________
  b DD 2.0
  d DD 3.0
  cc DD 4.0
  a dd 6.0

  w DD -1.0
  q dd 0
  e dd 0

r dd 9.0
;_______________
.code
start:
 fld DWORD ptr [b]
 fmul DWORD ptr [b]
 fmul DWORD ptr [d]
 fmul DWORD ptr [d]
 fmul DWORD ptr [w]
 fst DWORD ptr [w]

 fld DWORD ptr [b]
 fmul DWORD ptr [b]
 fmul DWORD ptr [cc]
 fmul DWORD ptr [cc]
 fst DWORD ptr [q]


 fld DWORD ptr [a]
 fmul DWORD ptr [cc]
 fmul DWORD ptr [a]
 fmul DWORD ptr [cc]
 fst DWORD ptr [e]

 fld DWORD ptr [q]
 fdiv DWORD ptr [e]
 fadd DWORD ptr [w]

 fadd DWORD ptr [r]

 fst DWORD ptr [r]
 ; Теперь остается вывести на экран переменку r
ret
end start
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблер farxad Помощь студентам 6 11.09.2016 14:19
Ассемблер SWEET_15 Помощь студентам 3 06.09.2016 08:45
Ассемблер и массив NSvirus Фриланс 1 29.06.2009 22:51
Ассемблер InTest Фриланс 1 12.12.2007 02:05