ax
состоит из ah
и al
.
movzx
is mov
с "zero extended", может использоваться для копирования более короткого значения в более крупный пункт назначения.
movzx ah,0
не является законным, он перемещается в постоянный 8b в регистр 8b, ничего не расширяется (mov ah,0
достаточно).
movzx ax,BYTE 20
будет иметь нулевое расширение 8 бит постоянной 20 и сохранить его в 16 бит ax
.
Это эквивалентно mov al,20 mov ah,0
или mov ax,WORD 20
(или несколько тысяч других вариантов, как загрузить значение байта 20 в al
и ноль в ah
, один из наиболее распространенных из них заключается в использовании xor ah,ah
).
После того, как вы весь ax
инициализации, вы можете либо изменить add al,#i
в 16b вариант add ax,#i
, или сочинить ту же самую вещь из двух 8b добавить инструкции, как add al,#i
(CF флаг = Карри сета, когда результат сделал переполнение 8b) adc ah,0
(добавление CF до ah).
Попробуйте применить это к ответу Майка, если вы все еще потеряли, получите хорошую книгу/учебник/лекцию.
Как вы можете спросить что-то вроде «Значит, возможны только регистры AX и EAX?»? Это означает, что вы ничего не читали (или не понимали) о ассемблере x86. Но вы уже пытаетесь написать код? Сначала выходите на некоторые лекции, и несколько раз перечитывать несколько замечательных книг или лекций несколько раз, и все это будет в некоторой степени более ощутимым. На данный момент вам сложно ответить на этот вопрос, не задумываясь о том, что у вас есть в классе.
hint: 260> 256. Вы не можете этого сделать. –
Я знаю, но мне сказали, что есть способ сделать это с помощью MOVZX? Спасибо. –
Вы можете получить 260, если вы не используете AL, но AX. Худший случай, AH: AL (тот же регистр просматривается по-разному). Вычисление в восьми битах, а затем нулевое расширение, которое не будет работать. –