Как перевести число в символ? - Assembler

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

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

Помогите с одной вещью ! Как перевести сумму двух чисел в ASCII строку числа этой суммы ? Буду благодарна за помощь

Решение задачи: «Как перевести число в символ?»

textual
Листинг программы
  1. ; преобразует число из регистра AX в строку
  2. ; входные данные:
  3. ; ax - число для отображения
  4. ; ds:dx - адрес для результирующей строки Pascal типа
  5. UInt16ToStr      proc
  6.         push    ax
  7.         push    bx
  8.         push    cx
  9.         push    dx
  10.         push    di
  11.         push    si
  12.  
  13.         mov     si,     dx
  14.         mov     [si],   byte ptr 0      ;текущая длина строки равнв 0
  15.  
  16.         mov     cx, 10
  17.         xor     di, di          ; di - кол. цифр в числе
  18.  
  19.  @@Conv:
  20.         xor     dx, dx
  21.         div     cx              ; dl = num mod 10
  22.         add     dl, '0'         ; перевод в символьный формат
  23.         inc     di
  24.         push    dx              ; складываем в стек
  25.         or      ax, ax
  26.         jnz     @@Conv
  27.         ; выводим из стека в строку
  28.         mov     ax,     0
  29.         mov     al,     [si]     ячейку с длиной записываем длину строки
  30.         add     [si],   di       учётом возможного символа знака
  31.         inc     si              ;устанавливаем указатель на первую свободную ячейку
  32.         add     si,     ax
  33. @@Show:
  34.         pop     dx              ; dl = очередной символ
  35.         mov     [si],   dl
  36.         inc     si
  37.         dec     di              ; повторяем пока di<>0
  38.         jnz     @@Show
  39.  
  40.         pop     si
  41.         pop     di
  42.         pop     dx
  43.         pop     cx
  44.         pop     bx
  45.         pop     ax
  46.         ret
  47. UInt16ToStr      endp

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

  1. Создается процедура под названием UInt16ToStr для преобразования числа из регистра AX в строку.
  2. Выполняется сохранение значений регистров в стеке: ax, bx, cx, dx, di, si.
  3. Устанавливается указатель SI на адрес строки. Устанавливается длина строки равной 0.
  4. Загружается значение 10 в регистр cx. Регистр di устанавливается в ноль, представляя количество цифр в числе.
  5. Выполняется деление числа в регистре ax на 10. Остаток от деления (цифра числа) увеличивается на значение символа '0' для перевода в символьный формат.
  6. Цифра кладется в стек. Проверяется, не закончилось ли число.
  7. Затем из стека извлекается цифра и записывается как символ в строку. Это повторяется, пока в стеке не кончатся цифры.
  8. После этого значения регистров восстанавливаются из стека.
  9. Процедура завершается командой ret.

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


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

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

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы