1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

[PDP11] Программисты, желающие подумать, нужна ваша помощь...

Тема в разделе "Оффтопик", создана пользователем MySt1k, 7 ноя 2014.

  1. Автор темы
    MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Нужно решить задачу с помощью утилиты PDP11 .
    Задача: Записать в регистр R1 число нулевых элементов массива X.

    Посмотрим кто достоин звания программиста на РБ...
     
  2. mаster_сrafеr

    mаster_сrafеr Активный участник Пользователь

    Баллы:
    48
    Имя в Minecraft:
    ddclash
  3. Миднайтко

    Миднайтко Старожил Пользователь

    Баллы:
    153
    Я здесь причем? Я не пишу на низкоуровневых языках. Судя по всему, это эмулятор DEC'а :) И, думаю, что там ассемблер.
     
  4. Автор темы
    MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
  5. HoShiMin

    HoShiMin Старожил Пользователь

    Баллы:
    173
    Эта штука 16-битная, на своей восьмёрке не могу запустить, а виртуалку ставить долго. Что хоть внутри там? Если действительно асм, могу накидать асмовый шелл-код, а ты его подгонишь под свой PDP.
    Допустим, у тебя уже есть указатель на начало массива, все элементы в нём имеют один размер (2 байта, стандарт для х16, что в переводе на человеческий - тип Word). И также ты знаешь количество элементов в массиве.
    Код:
    ArraySize dw ? ; Здесь количество элементов
    ArrayPtr dw ? ; Указатель на первый элемент массива
    
    ; Поехали!
    start:
      xor R1, R1 ; Обнуляем регистр R1
      mov si, [ArrayPtr]
      xor cx, cx
    
    @Loop:
      ; Сравниваем элемент с нулём:
      mov ax, [si + cx * 2]
      test ax, ax
      jz @IncCounter
    
      jmp @Continue
    
    ; Если ноль - увеличиваем счётчик:
    @IncCounter:
      inc R1
      jmp @Continue
    
    @Continue:
      ; Дошли ли до конца массива:
      inc cx
      cmp cx, [ArraySize]
      je @Exit
      jmp @Loop
    
    
    @Exit:
      ; Массив закончился, в R1 - количество нулевых элементов
      ret
    
    
    Хз, есть ли в PDP x86-регистры, если нет, то "ax", "si" замени на нужные (какие-нибудь R2, R3 и т.д.)
     
    Последнее редактирование: 7 ноя 2014
  6. Автор темы
    MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Вот что это:
    [​IMG]
     
  7. HoShiMin

    HoShiMin Старожил Пользователь

    Баллы:
    173
    Вот на кой хрен на мехмате учат никому не нужный PDP вместо настоящего, полезного в быту асма? Голову только забивают всякой бесполезной чепухой.

    2014.11.07-16.31.51.png
     
  8. Автор темы
    MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    К сожалению только 32бит системы. Самому пришлось у друга на ноуте запускать...
     
  9. HoShiMin

    HoShiMin Старожил Пользователь

    Баллы:
    173
    А сам язык - ассемблер? Или тоже какой-то свой алгоритмический псевдокод? Если асм, то просто в моём коде поменяй названия регистров на R2, R3 и готово. Метки и прочие базовые вещи он должен понимать.
     
  10. Автор темы
    MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Да он самый... Спасибо за скрипт... может быть поможет...
    Спасибо, @HoShiMin, я разобрался, благодаря твоему скрипту.
     
  11. HoShiMin

    HoShiMin Старожил Пользователь

    Баллы:
    173
    Значит теперь я достоин звания программиста на РБ :cool: Требую плашку "Uber coder" :D
    P.S.: скрипт на асме...
     
  12. Миднайтко

    Миднайтко Старожил Пользователь

    Баллы:
    153
    Ubersoldier
     
  13. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Ubersoliter.
     

Поделиться этой страницей