Да, ну? А какой у нее был код? И пруф какой-нибудь, только не ссылку на "Процессор Intel в защищенном режиме"#5, где broken sword написал "если инструкции LCS не существует в документации Интела, это не значит что ее не существует вообще. Я где-то читал про это, просто интел в таблицах опкодов оставила для нее рядом с соответствующими инструкциями lds, lss... пустой квадратик. Сейчас найти не могу."
Mikl___ 0F у неё опкод. fasm её, кстати, в 16-битном режиме компилирует (как раз в рассчёте на тот самый 8086). Потом этот опкод начали использовать для расширения набора инструкций и кодирования новых.
l_inc Спасибо, а то на аналогичный вопрос ни leo, ни kaspersky не ответили, а кроме fasm'a есть еще какой-нибудь пруф?
Mikl___ Как насчёт потестить на самом 8086? Ну а серьёзно, Ваш гугл не справляется? Мой вот сам 86/88 Programmer's reference не находит, но по крайней мере цитату из него найти можно: http://ref.x86asm.net/geek32.html#gen_note_opcd_POP_CS_0F
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): ; masm dos exe # .model large .code . . . call far ptr q;9A49000000 = call 00000:00049 . . . q proc far ret q endp end start
pop cs делать нельзя. Хотя команда якобы и существовала, ее никогда не было. Да, по логике, это именно 0F. Но не надо использовать этот опкод, даже на 286. Про 86-186 ничего не скажу, может оно там и выполнялось - но это в таком случае багофича, а не запланированное поведение. Регистр cs - указатель на текущий сегмент команд. Его нельзя изменять явно. Поэтому так же не должны работать MOV CS, AX и аналогичные. Хотя опкод сочинить можно.
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 с сайта и т.п.
jmp, call, iret и retf - это нормальные способы. Одновременная загрузка CS:IP а pop cs и mov cs, reg - ненормальные ) где должно оказаться следующая выполняемая инструкция? как это использовать кроме "трюка"? зачем это нужно?