2016-05-21 3 views
-1

Я изучаю язык ассемблера, и я плохо себя чувствую. Я не могу много узнать об этом в Google, поэтому я мягко прошу вас, ребята, помочь мне с этим.Основы языка сборки

У меня есть тест на следующей неделе, и я пытаюсь учиться на это, но, как я уже сказал, я не могу найти то, что мне действительно нужно в ассемблере на google. Вот некоторые вопросы, которые могут возникнуть на моем экзамене:

Я хотел бы просто получить быстрый ответ для них, просто чтобы иметь представление, если это нормально. Большое вам спасибо за помощь !:

  1. Регистры помещаются в стек, но выталкиваются в обратном порядке. Объясните, почему это так.

  2. Типичное определение процедуры включает в себя резервное копирование и восстановление регистров. Объясните, почему это необходимо

  3. Зарегистрируйтесь, чтобы регистрировать перемещения, например. «MOV AL, BL» не поддерживаются в симуляторе SMZ, как используется в классах . Ввиду этого ограничения объясните, как содержимое регистра BL может быть скопировано в AL.

  4. Объясните связь между инструкцией «cmp» и инструкциями условного перехода, такими как «jz».

Большое вам спасибо!

+0

Пробовали ли вы материал курса, профессорами заметки, предыдущая заданий и учебников для вашего курса? –

+0

Да, я сделал. Весь материал курса у меня есть от Moodle, который не говорит об этих типах вопросов, только о Kernel, OS и т. Д. У меня нет книг для этого курса, это все из Moodle. –

+0

Хорошо аналогия для вопроса 1 есть. Стек работает как куча обеденных тарелок. Вы кладете одну пластину поверх другой. Нижняя часть стопки - первая пластина, а верхняя часть стопки - последняя пластина, на которую вы надеваете. Самая первая пластина на дне теперь покрыта всеми другими пластинами. Чтобы добраться до первой пластины (или любой предыдущей пластины), вы снимаете пластины в обратном порядке.Это считается Last In First Out, а примером является стек. –

ответ

1
  1. Вот как стек работает, вы всегда смотрите на верхний элемент, так что если вы установите пункт х, а затем у, у находится сверху, поэтому, когда вы поп аргумент, вы поп первых у, а затем х , Вы можете написать собственный код сборки, который выдает аргумент, когда вы ввели их, но это не так логично для стека.

  2. Вы не всегда знаете код в вызываемой процедуре и можете изменять значения регистров, поэтому вы сохраняете их раньше, поэтому независимо от того, что вызовет вызываемая процедура, когда он вернется, состояние регистров будет быть такой же, как вы оставили его

  3. не уверен, не знаю, что тренажер ...

  4. Это как сборка реализует такие вещи, как если заявления. Вы переходите к определенному коду, если утверждение истинно, а где-то еще (или не прыгать), если нет. Например, if(a == b), когда EAX удерживает значение a, а EBX удерживает значение b, код сборки вычитает значения (cmp вычитает регистры и сохраняет результат в регистре флагов), а если он равен нулю, он скачет к коду внутри если, а если нет, продолжать или перейти к другому заявлению

Надежда Я помог, извините за мой плохой английский :)

+0

Он сделал, брат. Спасибо огромное! –

+0

Отметьте ответ как полезный, если да :) Удачи вам в экзамене! @LucasBecker –

+0

Мы выражаем благодарность здесь, на SO, приняв ответ. Нажмите на значок галочки для этого. –