Я готовлюсь к экзамену и пока не нашел подобных примеров.
Я вижу, что mov al, '*'
перемещает символ в регистр, но я не уверен, какой режим адресации используется для этой конкретной функции.
Я готовлюсь к экзамену и пока не нашел подобных примеров.
Я вижу, что mov al, '*'
перемещает символ в регистр, но я не уверен, какой режим адресации используется для этой конкретной функции.
Когда вы перемещаете литерал в регистр, это называется немедленным режимом.
вот полезный справочник, определяющий наиболее часто используемые режимы в процессорах, используя в качестве примера набор инструкций MIPS.
42
). и поскольку цель равнаal
, числовое значение усекается до 8 бит - все коды ASCII укладываются в 7 бит, поэтому усечение не требуется, но гипотетически, если бы ваш ассемблер работал в другой кодировке, результирующее значение может быть 16 бит (например, для кодировки UCS2) или даже с переменной длиной байта (UTF8). Таким образом, результирующий машинный код идентиченmov al,42
, но на уровне исходного кода символ дает больше контекста для чтения исходного кода. - person Ped7g   schedule 06.08.2018mov al, ' * '
, поэтому на самом деле вы получитеmov al, 32
, потому что первый символ в символьной константе — это пробел. Как вы говорите, он усекается до размера операнда. Я предположил, что это не было предназначено, поэтому я поставилmov al, '*'
в теле вопроса. - person Peter Cordes   schedule 07.08.2018al, '*'
или действительно вариант с пробелами (мне верится с трудом). Кроме того, это могло быть скопировано вручную из книги / бумаги (а не из исходного редактора), и ОП не понял, что между апострофами и звездочкой нет пробела ... Трудно сказать, но другие люди вряд ли будут искать буквально'*'
, так что это наверное не имеет значения. - person Ped7g   schedule 07.08.2018