На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Я вот тут попробовал 2 в 100 степень...
    Мне тут задачка попалась 2 в сотую степень возвести ...поробовал во так:
    Uses crt;
    Var
    b8:array[0..12] of byte;
    t:Integer;
    Begin
    b8[12]:=2;
    asm
    push ds
    mov cl,100
    lea bx,b8
    mov ds,bx
    mov si,19
    shl ds:[si],cl
    pop ds
    end;
    for t:= 0 to 12 do
    begin
    write(b8[t]);
    end;
    writeln;
    End.
    ....не получается
    может быть логический здвиг с ячейками памяти
    не работает а?
    Подскажите плз чё не то ...
    MishaS
      требуется 13 байт, и установить бит 3 в 1, вот только не знаю как будешь на печать это все выводить :(
        Это всё понятно ....шоб в двоичном формате не возиться я ету прогу и написал ..а он стерва не пашет..
          Пиши условие задачи полностью, я лично ниче не понял :(, зачем оно надо именно 2 и именно в 100-ю степень, и в каком формате выводить?
          Если б даже оно работало как написано (сомневаюся что shl ds:[si],cl сдвинет на 100 бит), то получилось бы нечто такое
          00001000
          00000000
          ...
          много нулей
          ...
          00000000
          00000000
          и это все надо преобразовать к десятичной или шестнадцатеричной системе чтоб напечатать
            Вычислять надо по формуле
            y^x = 2 ^ (x * log2(y))
            Пусть x, y - числа типа integer, z - типа extended, тогда
            var
            z: extended;
            x, y: integer;
            begin
            y := 1;
            x := 100;
            asm
            fild y
            fyl2x
            fild x
            fmul st,st(1)
            f2xm1
            fld1
            fadd st,st(1)
            fst z
            end
            writeln(z);
            end.
            Надеюсь, ничего не напутал! :)
            ЗЫ: Как это прекрасно, спустя 8 лет снова писать на Паскале :)
              Мало того, что с кодом облажался :(
              fild x
              fild y
              fyl2x
              f2xm1
              fld1
              fadd st,st(1)
              fst z
              Да и толку нет от этого кода! На промежуточном этапе число выходит за диапазон
              Можно втупую сделать:
              y := 2;
              x := 100;
              asm
              fild y
              mov cx,x
              sumloop:
              fadd sp,sp(0)
              loop sumloop
              fst z
              end
                Буит классно если ето заработает
                Пасибо...всем...
                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0326 ]   [ 14 queries used ]   [ Generated: 20.05.24, 19:05 GMT ]