Мне было бы интересно узнать о вашем опыте использования набора инструкций и учебного пособия по сборке, которое я собрал:
https://github.com/dwelch67/lsasim
Я разработал набор команд, основанный на общих и понятных концепциях различных процессоров. Учебное пособие в форме: просто введите этот код и запустите его, тогда я расскажу вам, что он сделал.
Я настоятельно не рекомендую x86 как ваш первый язык ассемблера. Попробуйте lsasim или msp430 или ARM / thumb или другие, намного более качественные, более чистые, гораздо более понятные наборы инструкций, а затем, если у вас есть небольшой опыт работы с одним или несколькими (например, msp430, arm, thumb), попробуйте перейти на x86. У меня есть симуляторы почти для всего, о чем я говорю, на github.com/dwelch67. Нет учебников, хотя. У меня есть симулятор большого пальца, подмножество набора команд arm, симулятор msp430, и я позаимствовал и урезал имитатор набора команд 8088/8806, так как считаю, что если вы используете x86, вы должны начать с основ. Я чувствую, что это сделает то, что вы видите в сегодняшней архитектуре x86, более понятным.
Я также чувствую, что подход симулятора дает вам лучшее представление о том, что происходит, и вы не разбиваете и не разрушаете свою систему, пытаясь учиться на ней, одновременно используя ее.
Несмотря на то, что спим часто используется для обучения асму в школе, я бы также избегал мипов в качестве первого набора инструкций. Это не плохой набор инструкций, проблема заключается в отношении и подходе документации. Он был специально спроектирован для скорости в течение определенного периода истории в вычислительной технике. Аппаратная производительность ради наказания программиста, у нее несколько нестандартных подходов к вещам. Я бы снова рекомендовал идти с чем-то средним и ортогональным, как те, что я упомянул выше.
Как только вы изучите один или два из этих чистых наборов инструкций, то выбор нового набора команд является вопросом синтаксиса. значительно проще, чем пытаться выучить новый язык программирования. Каждый набор инструкций, который вы изучаете, значительно облегчает следующий. Вскоре вы можете написать код за считанные минуты, если у вас есть несколько примеров нового набора инструкций. В частности, если у вас есть компилятор (C и т. Д.), Который вы можете разобрать в выходных данных, посмотрите эти инструкции в справочном материале и все готово ...