Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вычислить (2*c - d/3)/(b - a/4); 
:(
    Опции темы
b44
Дата 23.12.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.5.2006

Репутация: нет
Всего: нет



пожалуйста напишите прогу вычисляющая значение выражения (2*c - d/3)/(b - a/4) и сравнить результат с вычислением в паскале!
задачу надо сделать с помощью асемблеровской вставки в ТР! пожалуйста помогите!
PM MAIL   Вверх
MAKCim
Дата 24.12.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Код

fld    c
fld    __2
fmulp
fld    d
fld    __3
fdivp
fsubp
fld    b
fld    a
fld    __4
fdivp
fsubp
fdivp
fstp   result

вместо __2, __3, __4 подставь загрузку констант из памяти

Это сообщение отредактировал(а) MAKCim - 24.12.2006, 10:46


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
b44
Дата 24.12.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.5.2006

Репутация: нет
Всего: нет



пожалуйста исправте ошибки
Код

Uses crt;
var otv, a, b, c, d : word;
    two, fore , three: byte;
    z:real;
begin
 fore := 4;
 two := 2;
 three := 3;
 readln(a,b,c,d);
 z:=(2*c-d/3)/(b-a/4);
asm
mov ax, a
mov bx, b
mov cx, c
mov dx, d

div fore
sub bx, ax
mov ax , d
div three
neg ax
add ax, cx
div bx
mov otv, ax
end;
writeln(z:3:3);
writeln(otv);
readln;
end.

PM MAIL   Вверх
MAKCim
Дата 24.12.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



Код

Uses crt;
var otv, a, b, c, d : word;
    two, fore , three: byte;
    z:real;
begin
 fore := 4;
 two := 2;
 three := 3;
 readln(a,b,c,d);
 z:=(2*c-d/3)/(b-a/4);
asm
mov ax, a
mov bx, b
mov cx, c
mov dx, d
div fore               ; тут в итоге в AL - частное, в AH - остаток
xor ah, ah      ; надо бы ah обнулить
sub bx, ax
mov ax , d
div three
xor ah, ah  ; опять обнуление
neg ax
shl cx, 1 ; умножение c на 2
add ax, cx
div bx
mov otv, ax
end;
writeln(z:3:3);
writeln(otv);
readln;
end.



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
b44
Дата 24.12.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.5.2006

Репутация: нет
Всего: нет



кто нить может обьяснить почему ответы расходятся???
и как сделать чтобы ответы сходились?
PM MAIL   Вверх
anwe
Дата 24.12.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Надо применять команду idiv - деление со знаком. Тогда знак определяется по остатку. Частное - положительное.
PM MAIL   Вверх
Sartorius
Дата 24.12.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



b44, что бы ответы у тебя сошлись, нада писать не z:=(2*c-d/3)/(b-a/4); а z:=(2*c-d div 3) div (b-a div 4); или работай в асме с FPU
PM MAIL ICQ   Вверх
1BJ
Дата 24.12.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.12.2006

Репутация: нет
Всего: нет



ИЗВИНИТЕ,ЧТО Я ВАС ОТВЛЕКАЮ,НО У МЕНЯ СЕРЬЁЗНАЯ ПРОБЛЕМА С АССЕМОМ!
НАУЧИТЕ КОДИТЬ НА АССЕМЕ! smile 

PM MAIL   Вверх
Sartorius
Дата 24.12.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



1BJ, зачем пишешь в готовый топик?  Кодить научить нельзя, можно научиться.
 Для начала Абель(Assembler для IBM PC) потом Юров (Assembler учебник и справочник). Побольше практики  smile 
PM MAIL ICQ   Вверх
b44
Дата 24.12.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.5.2006

Репутация: нет
Всего: нет



Sartorius,  в паскале все правильно выщитывается!!
в асемблеровской вставке вроде стото не так, ответ большой получается!
если взять числа 9 6 3 1 в паскале около 1.5 получается - правильно,
а в асемблере около 16000 вроде!
PM MAIL   Вверх
1BJ
Дата 24.12.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.12.2006

Репутация: нет
Всего: нет



Я СКАЧАЛ КАЛАШНИКОВА, ВВЕЛ ТЕКСТ, А ДАЛЬШЕ, ДАЛЬШЕ КАК?
PM MAIL   Вверх
anwe
Дата 25.12.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



1BJ, тебе же сказали создай новую тему, не засоряй эфир smile 
PM MAIL   Вверх
b44
Дата 25.12.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.5.2006

Репутация: нет
Всего: нет



Sartorius,  в паскале все правильно выщитывается!!
в асемблеровской вставке вроде стото не так, ответ большой получается!
если взять числа 9 6 3 1 в паскале около 1.5 получается - правильно,
а в асемблере около 16000 вроде! 
кто знает в чем ошибка пожалуйста исправте!
PM MAIL   Вверх
Akina
Дата 25.12.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Код

mov ax, a
mov bx, b
mov cx, c
mov dx, d

shr ax,2 ; ax = a\4
sub bx,ax ; bx = b-a\4
shl cx,1 ; cx = 2c
mov ax, dx ; ax=d
mov dl, 3
div dl ; al = dx\3
cbw ; ax=dx\3
sub cx, ax ; cx=2c-d\3
mov ax, cx ; ax=2c-d\3
xor dx,dx
div bx ; ax=(2c-d\3)\(b-a\4)

В целых вроде так... писано на коленке, проверяй.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
anwe
Дата 25.12.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



ТОолько в Паскале кажется не воспримет
Код

shr ax,2
Надо дважды писать
Код

shr ax,1

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.