pop cs

Тема в разделе "WASM.BEGINNERS", создана пользователем totimoud, 2 фев 2012.

  1. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    Привет.

    Помогите, я в асме нуб немного. Почему pop ds компилится, а pop cs нет ?
     
  2. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Эта команда была только в i8086 и i8088, во всех более поздних процах она выпилена.
     
  3. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    iamlamer
    А как тогда в него загрузить своё значение ?
    И как команда могла пропасть ?
     
  4. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    call far xxx
    jmp far xxx

    чего ещё надо?
     
  5. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Код (Text):
    1. jmp Адрес
     
  6. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    call far 10H:123456H

    Не компилится(масмом), пишет missing operator in expression :dntknw:
     
  7. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Код (Text):
    1. db  EAh
    2. dw 1234h
    3. dw 0010h
     
  8. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    iamlamer
    Нужно в командах, db это не инструкция на сколько понимаю.
     
  9. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Клерк троллит)
     
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Да, ну? А какой у нее был код? И пруф какой-нибудь, только не ссылку на
    "Процессор Intel в защищенном режиме"#5, где broken sword написал "если инструкции LCS не существует в документации Интела, это не значит что ее не существует вообще. Я где-то читал про это, просто интел в таблицах опкодов оставила для нее рядом с соответствующими инструкциями lds, lss... пустой квадратик. Сейчас найти не могу."
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Mikl___
    0F у неё опкод. fasm её, кстати, в 16-битном режиме компилирует (как раз в рассчёте на тот самый 8086). Потом этот опкод начали использовать для расширения набора инструкций и кодирования новых.
     
  12. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    l_inc
    Спасибо, а то на аналогичный вопрос ни leo, ни kaspersky не ответили, а кроме fasm'a есть еще какой-нибудь пруф?
     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Mikl___
    Как насчёт потестить на самом 8086? :) Ну а серьёзно, Ваш гугл не справляется? Мой вот сам 86/88 Programmer's reference не находит, но по крайней мере цитату из него найти можно: http://ref.x86asm.net/geek32.html#gen_note_opcd_POP_CS_0F
     
  14. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    l_inc
    Нет, я пошел другим путем
    push ds;1E=000 11 110
    push cs;0E=000 01 110
    push es;06=000 00 110
    push ss;16=000 10 110
    pop ds ;1F=000 11 111
    pop es ;07=000 00 111
    pop ss ;17=000 10 111 различие между PUSH/POP в младшем бите
    зная, что 0=ES, 1=CS, 2=SS, 3=DS, 4=FS и 5=GS
    реконструируем pop cs=000 01 111, то есть 0Fh — а за цитату спасибо!
    А 8086 попробую поискать, спасибо за идею ;)
    totimoud
    у меня масм компилирует
    Код (Text):
    1. ; masm dos exe #
    2. .model large
    3. .code
    4. . . .
    5.     call far ptr q;9A49000000 = call 00000:00049
    6. . . .
    7. q proc far
    8.     ret
    9. q endp
    10. end start
     
  15. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    Mikl___
    Учитель сказал что .model large это дос и нужно использовать .flat

    l_inc
    Спасибки!
     
  16. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    ну, раз учитель сказал — используй .модел флэт — результат будет таким же ;)
     
  17. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    pop cs делать нельзя. Хотя команда якобы и существовала, ее никогда не было. Да, по логике, это именно 0F. Но не надо использовать этот опкод, даже на 286. Про 86-186 ничего не скажу, может оно там и выполнялось - но это в таком случае багофича, а не запланированное поведение.

    Регистр cs - указатель на текущий сегмент команд. Его нельзя изменять явно. Поэтому так же не должны работать MOV CS, AX и аналогичные. Хотя опкод сочинить можно.
     
  18. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    FatMoon
    Да где ж его взять-то intel286? Никто еще не отменял JMP FAR, CALL FAR, IRET, RETF а также модели памяти LARGE, MEDIUM, HUGE, следуя этой логике нужно вырвать соответствующие страницы, где демонстрируется работа с сегментами в защищенном режиме
    Зубков С.В. "Assembler для Windows, DOS и Unix" стр 493
    К.Г.Финогенов "Использование языка ассемблера" стр 209
    П.И.Рудаков К.Г.Финогенов "Язык ассемблера: уроки программирования" стр 286
    Юров Хорошенко "Assembler: учебный курс" стр 431
    Всю книжку Фроловых "Защищенный режим процессоров Intel 80286/80386/80486" Том 4, М.: Диалог-МИФИ
    изъять стати Broken Sword'a с сайта и т.п.
     
  19. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    jmp, call, iret и retf - это нормальные способы. Одновременная загрузка CS:IP
    а pop cs и mov cs, reg - ненормальные ) где должно оказаться следующая выполняемая инструкция? как это использовать кроме "трюка"? зачем это нужно?
     
  20. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Mikl___
    А селектор указать можно? Большая часть проблем с masm решается переходом на fasm. :)