перестановка тетрадов, не могу понять как это осуществить

Тема в разделе "WASM.BEGINNERS", создана пользователем amisd, 16 сен 2007.

  1. amisd

    amisd New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2007
    Сообщения:
    17
    подскажите как переставить, к примеру, 1 и 3 тетраду в слове 1329H, заранее спасибо
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Код (Text):
    1. mov ax,1329h
    2. mov bx,ax
    3. xchg bh,bl
    4. and ax,0f0f0h
    5. and bx,0f0fh
    6. or ax,bx
     
  3. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    mov ax, 1329h
    mov bl, ah
    shr bl, 4
    shl ah, 4
    or ah, bl ; В ах теперь 3129h по идее
     
  4. amisd

    amisd New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2007
    Сообщения:
    17
    Novi4ek
    а как проверить это?)
    и как это работает? я только начал изучать этот язык
    FreeManCPM
    компиль выкидывает
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    amisd
    у меня даж в debug.exe нормально сработало, видемо гавно ваш компиллер
     
  6. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Почитай "введение в низкоуровневое программирование для дзенстующих" на этом сайте и скачай справочник по ассемблеру для х86 (Юрова например).
    А вообще, ты понимаешь как сделать твою задачу например на С или Паскале?
     
  7. amisd

    amisd New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2007
    Сообщения:
    17
    Novi4ek
    на си да, либо просто ч/з текстовый массив несколькими вариантами, либо через %, или c помощью >>, |, <<
    юров есть, он не приводит примеров с изменениями происходящими при перестановке, я совсем запутался с представлением чисел в этом языке, когда происходит перестановка, числа перестанавливаются в каком виде? 1 число 1 тетрадр, т.е. 4 бита так ведь?
    FreeManCPM
    скорей всего, всёже бета) тасма шелла
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Код (Text):
    1. mov ax,1329h; ax=1329
    2. mov bx,ax;bx=ax=1329
    3. xchg bh,bl;bx=2913
    4. and ax,0f0f0h;ax=1020
    5. and bx,0f0fh;bx=0903
    6. or ax,bx;ax=1923
     
  9. amisd

    amisd New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2007
    Сообщения:
    17
    FreeManCPM
    теперь прозрачно, благодарю, единственное что не понял
    - 0f0f0 и 0f0f как выбирается? допустим мне нужно выбрать из числа 1234 4-ю и 1-ю цифры, тобиш сделать нулями вторую и третью, как это сделать?
    и ещё? можно ли заменить операцию or операцией add?это ж ведь по сути одно и тоже)

    пс на этапе компиляции вылетает ошибка: 16 разрядная подсистема ДОСки. "Процессор NTVDM обнаружил недопустимую инструкцию. CS:f0f0 IP:2655 OP ff ff 00 00 cf Для завершения тыры пыры..." у меня амд иль пофигу?
     
  10. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    mov ax,1234
    and ax,0f00fh; ax=1004
    в данном случае да, но это не одно и тоже. 4 or 4=4 4+4=8
    пофегу
    используй норм. компиллер.
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    это маски. про операции and/or (И/ИЛИ) в курсе?
     
  12. amisd

    amisd New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2007
    Сообщения:
    17
    всё, разобрался) всем спасибо
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Кстати, не "тетрадов", а "тетрад".