Написать программу перевода двухбайтового целого числа в массив символов - Assembler

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

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

Помогите пожалуйста сделать несколько лаб по ассемблеру, вот например такое задание: Разработать алгоритм т написать программу перевода 2-байтового целого числа в массив символов, который представляет запись числа в шестнадцатеричной системе(4 знака) число: A2B7h

Решение задачи: «Написать программу перевода двухбайтового целого числа в массив символов»

textual
Листинг программы
    mov ecx,8; количество цифр в строке
    mov edi,offset String; адрес строки в edi
@@:    rol eax,4; преобразуемое число в регистре eax
    push eax
    cmp al,9;если al < 10, CF = 1
    ja a1  
    add al,'0'
    jmp short a2
a1:     add al,'7'
a2:    stosb; помещаем значение из AL в строку
    pop eax
    loop @b; уменьшаем счетчик

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

  1. Вначале происходит установка счётчика циклов в 8 (ecx=8).
  2. Затем происходит установка адреса строки в регистре edi (edi=offset String).
  3. Далее происходит преобразование двухбайтового числа в регистре eax (eax=eax rol 4).
  4. Затем значение eax сохраняется на стеке (push eax).
  5. Происходит проверка младшего бита числа в eax (al) на предмет его значения (al < 10). Если это так, то флаг CF устанавливается в 1.
  6. Если условие в пункте 5 выполняется, то происходит переход к метке a1.
  7. В противном случае происходит переход к метке a2.
  8. При выполнении условия в пункте 7, к младшему биту числа в eax (al) добавляется символ '7'.
  9. При выполнении условия в пункте 6, к младшему биту числа в eax (al) добавляется символ '0'.
  10. Затем происходит переход к метке a2.
  11. Происходит копирование значения регистра al в строку (stosb).
  12. Затем происходит восстановление значения eax из стека (pop eax).
  13. Далее происходит проверка условия окончания цикла (loop @b).

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


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

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

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