Как обнулить регистр? - Assembler

Узнай цену своей работы

Формулировка задачи:

Подскажите, как обнулить отдельные регистры в ассемблере?

Решение задачи: «Как обнулить регистр?»

textual
Листинг программы
     mov   ax,0               ;обнуление MOV'ом
     sub   ax,ax              ;вычитаем регистр сам из себя
     xor   ax,ax              ;арвиХакер, ксорящий ворды в уме
     and   ax,0               ;логика - тоже неплохой вариант
     imul  ax,0               ;более хитро: умножим на 0.
     shr   ax,16              ;cдвиг (не путать со спрыгом)
     loop  $                  ;обнулим (E)CX
     cwd                      ;обнулим DX
     aam   1                  ;обнулим AL. (AH=AL,AL=0)
     aad   0                  ;обнулим AH
     in    ax,81h             ;более хитро: прочитаем 0 из порта
     mov   eax,fs:[10h]       ;cчитаем ноль из сегмента FS (PE файл)
     call  GetCurrentObject   ;вызовем функцию с кривыми параметрами (вернется NULL в EAX)
     push  0  / pop ax        ;используя стек

Объяснение кода листинга программы

  1. mov ax,0 - обнуление MOV'ом
  2. sub ax,ax - вычитаем регистр сам из себя
  3. xor ax,ax - арвиХакер, ксорящий ворды в уме
  4. and ax,0 - логика - тоже неплохой вариант
  5. imul ax,0 - более хитро: умножим на 0.
  6. shr ax,16 - cдвиг (не путать со спрыгом)
  7. loop $ - обнулим (E)CX
  8. cwd - обнулим DX
  9. aam 1 - обнулим AL. (AH=AL,AL=0)
  10. aad 0 - обнулим AH
  11. in ax,81h - более хитро: прочитаем 0 из порта
  12. mov eax,fs:[10h] - считаем ноль из сегмента FS (PE файл)
  13. call GetCurrentObject - вызовем функцию с кривыми параметрами (вернется NULL в EAX)
  14. push 0 / pop ax - используя стек

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы