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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2013, 19:43   #1
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию asm вставка в дэлфи

Вот такая проблема:
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
  SysUtils;
//(4*a/b + l)/(a*b - 18 + a)        //само задание
procedure RUN;
var
  res,res2,a,b:word;
begin
  a:=5;
  b:=3;     //значения произвольные
  asm
    mov ax, a;      //ax - аккумулятор;
    mov dx, b;
    mul ax, dx;
    sub ax, 18;
    add ax, a;
    mov cx, ax;     //вторая скобка;

    mov ax, a;
    mov dx, 4;
    mul ax, dx;
    div  b;
    inc ax;         //первая скобка;

//    div ax, cx;
    mov res, ax;
    mov res2, cx;
  end;
  writeln(res);
  writeln(res2);
  readln;
end;
begin
  RUN;
end.
В таком варианте res и res2 выдают верные значения. Почему я немогу поделить первую скобку на вторую (выделено красным)?
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 25.02.2013, 22:06   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
    inc ax;         //первая скобка;
    cwd;
    div cx;
//    div ax, cx;
eoln вне форума Ответить с цитированием
Старый 25.02.2013, 22:12   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Спасибо, буду знать.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 25.02.2013, 22:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Скорее всего потому что:
Цитата:
F7 /6 DIV r/m16 Unsigned divide DX:AX by r/m16; AX
If source operand is a word
value, then DX:AX is divided by "src" and the quotient is stored in AX
and the remainder in DX.
т.е. делить нужно с учетом второго регистра:
Код:
    xor dx,dx
    div ax, cx;
иначе переполнение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
asm вставка в С Таня_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.01.2012 15:28
Передача параметров asm-asm Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.12.2011 11:54
Задача с массивом вставка asm flyinsky Паскаль, Turbo Pascal, PascalABC.NET 4 21.12.2011 23:07
asm вставка Акоб Паскаль, Turbo Pascal, PascalABC.NET 5 06.11.2011 00:46
Задача в дэлфи shadow55 Помощь студентам 4 08.01.2010 00:35