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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2010, 23:50   #11
rozz
Пользователь
 
Аватар для rozz
 
Регистрация: 02.09.2010
Сообщений: 26
По умолчанию

Ну да, формула меняться не должна.

Stilet, спасибо тебе, мил человек Попробую позже скомпилить, посмотрим на результат
И все же присущ еще альтруизм суровым айтишникам

Кстате, а можно еще одно подобное задание кинуть? Там уже просто с Х и при условиях =/

Последний раз редактировалось rozz; 04.09.2010 в 00:18.
rozz вне форума Ответить с цитированием
Старый 10.09.2010, 12:48   #12
rozz
Пользователь
 
Аватар для rozz
 
Регистрация: 02.09.2010
Сообщений: 26
По умолчанию

Ап!

Слушай, я тут решила разбить те две формулы, получается, что задача реализована в одной программе, а мне надо для каждой формулы разные программы, т.е для без знак - (12/c-d*4+73)/(a*a+1), для знак - (4*c-d/2+23)/(a*a-1), и это в двух разных программах.
Я значит разбила твою программу, вернее - попыталась, в результате часть первой программы:
Код:
format PE console
entry start

include 'C:\fasmw16918\INCLUDE\win32a.inc'

section '.data' data readable writeable
ru db 'Russian',0
cmd db 'pause',0
m1 db 'Input a c d: ',13,10,0
m3 db 'Divide by zero can not',13,10,0
m2 db 'Results For no sign of: = %d',13,10,0
fmat db '%d %d %d',0
a dw 0
c dw 0
d dw 0

section '.code' code readable executable
start:
  cinvoke setlocale,0,ru
  cinvoke printf,m1
  cinvoke scanf,fmat,a,c,d
  ;(12/c-d*4+73)/(a*a+1)
  xor eax,eax
  ;(a*a+1)
  mov ax,[a]
  mul [a]
  inc ax
  push eax
  ;d*4
  mov ax,4
  mul  [d]
  push eax
  ;12/c
  mov ax,12
  div [c]
  sub ax,[esp]
  add ax,73
  add esp,4
  div word [esp]
  add esp,4
  xchg eax,ebx

  cinvoke printf,m2,ebx
  jmp ok
Ошибка:
  cinvoke printf,m3

ok:
  cinvoke system,cmd
  invoke ExitProcess,0
section '.idata' import data readable

library kernel,'kernel32.dll',\
     msvcrt,'msvcrt.dll'

import kernel,\
       ExitProcess,'ExitProcess'

import msvcrt,\
       setlocale,'setlocale',\
       printf,'printf',\
       scanf,'scanf',\
       system,'system'
Я ввожу сюдой а = 5, с = 9, д=2. Результат мне выводит: 7564
Я проверила по формуле, а вернее - подставила тудой эти значения, итого результат получается: 2, 55 А не 7564

Это по первой части. По второй части, так здесь ты писал:
Код:
;(4*c-d/2+23)/(a*a-1)
  xor eax,eax
  mov ax,[a]
  imul [a]
  dec ax
  cmp ax,0
  jz Ошибка
  push eax
  ;d/2
  mov ax,2
  idiv	[d]
  push eax
  sub ax, [esp]
  add ax,23
    cmp word [esp],0
  jz Ошибка
  idiv word [esp]
  add esp,4
Где здесь вообще обращение к С ?

В свое оправдание могу кинуть эти формулы, расписанные в асме более проще:
Код:
(12/c-d*4+73)/(a*a+1)
sub bp, bp; bp=0 
mov ax, a; ax=a
mul ax; ax=ax*ax=a*a
inc ax; ax=ax+1=a*a+1
mov bx, ax; bx=a*a+1
mov ax, 12; ax=12
sub dx, dx; dx=0
; dx:ax=12
div c; ax=dx:ax/c=12/c
mov cx, ax; cx=12/c
mov ax, d; ax=d
sub dx, dx; dx=0
add ax, ax; ax=ax+ax=d*2
adc dx, bp; dx=carry(ax)
add ax, ax; ax=ax+ax=d*4
adc dx, bp; dx=carry(ax)
add ax, 73; ax=ax+73=d*4+73
adc dx, bp; dx=carry(ax)
add ax, cx; ax=ax+cx=12/c+d*4+73
adc dx, bp; dx=carry(ax)
div bx; ax=dx:ax/bx=(12/c+d*4+73)/(a*a+1)

(4*c-d/2+23)/(a*a-1)
mov ax, a; ax=a
imul ax; ax=ax*ax=a*a
dec ax; ax=ax-1=a*a-1
mov bx, ax; bx=a*a-1
mov ax, c; ax=c
mov dx, d; dx=d
sar dx, 1; dx=dx/2=d/2
add ax, ax; ax=ax+ax=ax*2=c*2
add ax, ax; ax=ax+ax=ax*2=c*4
add ax, dx; ax=ax+dx=4*c+d/2
add ax, 23; ax=ax+23=4*c+d/2+23
cwd; dx=sign(ax)
idiv bx; dx:ax/bx=(4*c+d/2+23)/(a*a-1)
Можешь помочь, пожалуйста, мне их реализовать по-первой формуле для без знаковых, а по второй - для знаковых посредством фасма, т.е. чтобы они уже имели вид программы, а не просто расписанной формулы.
rozz вне форума Ответить с цитированием
Старый 10.09.2010, 13:20   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Где здесь вообще обращение к С ?
Согласен провтыкал:
Код:
(4*c-d/2+23)/(a*a-1)
  xor eax,eax
  mov ax,[a]
  imul [a]
  dec ax
  cmp ax,0
  jz Ошибка
  push eax
  ;d/2
  mov ax,2
  idiv	[d]
  push eax
  mov ax,4
  imul [c]

  sub ax, [esp]
  add ax,23
    cmp word [esp],0
  jz Ошибка
  idiv word [esp]
  add esp,4

Не проверял ибо сейчас сижу дома.

Цитата:
итого результат получается: 2, 55
Не понял... Тебе операции с вещественными нужно делать? Я не настолько хорошо знаю ассемблер чтоб с FPU работать. Я тебе только с целыми дал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2010, 13:41   #14
rozz
Пользователь
 
Аватар для rozz
 
Регистрация: 02.09.2010
Сообщений: 26
По умолчанию

Дык, а как оно считает тогда? Я ввожу целые числа, в итоге получается 7 тыщ Оо ежели брать пример который я писала выше.

п.с.посмотри,пожалуйста, еще тему про матрицу, я там отписалась
rozz вне форума Ответить с цитированием
Старый 10.09.2010, 14:00   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У меня сейчас нет возможности проверить код. Ассемблера с собой нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2010, 14:12   #16
rozz
Пользователь
 
Аватар для rozz
 
Регистрация: 02.09.2010
Сообщений: 26
По умолчанию

Тебе кинуть асм? )
А когда будет возможность?
rozz вне форума Ответить с цитированием
Старый 10.09.2010, 15:13   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тебе кинуть асм?
Ага. И VS заодно.
Я с мобилы в инете - это не дешевое удовольствие
Цитата:
А когда будет возможность?
Не представляю. Когда попаду в инет не через мобилу с работы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2010, 15:16   #18
rozz
Пользователь
 
Аватар для rozz
 
Регистрация: 02.09.2010
Сообщений: 26
По умолчанию

У меня и ВС имеется
Хорошо, поняла ...
rozz вне форума Ответить с цитированием
Старый 13.09.2010, 18:54   #19
rozz
Пользователь
 
Аватар для rozz
 
Регистрация: 02.09.2010
Сообщений: 26
По умолчанию

Вопрос решён.
rozz вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учебник по FASM Roof Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 33 09.12.2013 23:16
реализация команд с помощью набора других команд zhenyaa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 08.11.2009 21:37
Вопросы по FASM Crivel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.06.2009 12:02
MySQL via FASM Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.05.2009 04:55
tasm>>fasm better Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 09.02.2009 19:34