Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 02.12.2014, 18:31   #1
X-Vlad
Новичок
Джуниор
 
Регистрация: 04.08.2013
Сообщений: 2
Восклицание Помощь в коде ассемблера+pascal

Код:
program Test_1;
uses Crt;
var
x,y,z,f:integer;
begin
clrscr;
write('x: ');
readln(x);
write('y: ');
readln(y);
write('z: ');
readln(z);
{   f=(3x-2y+1)/(10z-1) это нужно посчитать }
asm
mov ax, 3
imul x
xchg ax, bx
mov ax, 2
imul y
sub ax,bx
mov cx,1
add cx,bx
mov dx, 10
imul z
mov bx,1
idiv dx
mov f,ax
end;
writeln('f=', f);
readkey;
ввожу данные, все ок считает но не верно. Помогите плиз.
X-Vlad вне форума Ответить с цитированием
Старый 02.12.2014, 21:42   #2
X-Vlad
Новичок
Джуниор
 
Регистрация: 04.08.2013
Сообщений: 2
Хорошо Решение

вот решение
Код:
 program success_project;
 uses Crt;
 var
 x,y,z,f:integer;
 begin
 clrscr;
 write('x: ');
 readln(x);
 write('y: ');
 readln(y);
 write('z: ');
 readln(z);
 {   f=(3x-2y+1)/(10z-1)  }
 asm
mov ax, 3  {ax=3}
imul x     {ax=ax*3}
xchg ax, bx {bx=ax}
mov ax, 2  {ax=2}
imul y     {ax=ax*2}
sub bx,ax  {bx=bx-ax=(ax*3)-(ax*2)}
inc bx; {bx+1}
mov ax, 10 {ax=10}
imul z     {ax=ax*10}
dec ax {ax-1}
xchg ax,bx
idiv bx
mov f,ax
 end;
 writeln('f=', f);
 readkey;
 end.
X-Vlad вне форума Ответить с цитированием
Старый 02.12.2014, 22:36   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

если вас не смущает, что в результате деления получается целое число (остаток игнорируется), тогда попробуйте такой код:
Код:
program Test_1;
uses Crt;
var
  x, y, z, f: integer;
begin
  clrscr;
  write('x: ');
  readln(x);
  write('y: ');
  readln(y);
  write('z: ');
  readln(z);
{   f=(3x-2y+1)/(10z-1) это нужно посчитать }
  asm
   mov ax, 3
   imul x
   mov bx, ax
   mov ax, 2
   imul y
   sub bx,ax
   add bx,1  {в bx: (3x-2y+1)}

     { вычислим (10z-1)}
   mov ax, 10
   imul z
   sub ax,1
   mov cx,ax  {в cx: (10z-1) }
   mov ax,bx  {в ax: (3x-2y+1) }
   cwd        {расширение делимого dx:ax}
   idiv cx    {разделим dx:ax на cx
                   После операции частное помещается в ax, а остаток — в dx; }
   mov f,ax   {частное в переменную f}
  end;
  writeln('f=', f);
  readkey;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема в коде .bat нужна помощь студенту abramovev Помощь студентам 0 28.01.2014 14:37
не могу разобраться в коде в Pascal Wuzup Помощь студентам 1 01.11.2012 18:48
Работа с MMX ассемблера в Pascal иванлеон Помощь студентам 2 25.04.2012 17:54
Вывод графики в Pascal с использованием встроенного ассемблера иванлеон Помощь студентам 1 17.04.2012 11:44


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840