Выводящ= на экран десятичное значение регистра AX, выводит пустую строку - Assembler
Формулировка задачи:
не могу понять, почему выводится пустая строка, подскажите, пожалуйста, в чем может быть проблема? Уже второй день сижу с этим выводом
.model small ; Модель памяти .stack 100h ; Установка размера стека .data Number dw 12345 String db 5 dup (?),'$' ; Резервируем 5 байт для строки StringEnd = $-1 ; Указывает на символ '$' .code Start: mov ax, @data ; установка в ds адреса mov ds, ax ; сегмента данных std ; Устанавливаем ОБРАТНЫЙ порядок записи lea di,StringEnd-1 ; ES:DI = последний символ строки String mov ax,Number ; Заносим в AX число для перевода ; Начинаем перевод числа AX в строку mov cx,10h ; Задаемся делителем CX = 10 Repea: xor dx,dx ; Обнуляем DX (для деления) div cx ; Делим DX:AX на CX (10), ; Получаем в AX частное, в DX остаток xchg ax,dx ; Меняем их местами (нас интересует остаток) add al,'0' ; Получаем в AL символ десятичной цифры stosb ; И записываем ее в строку xchg ax,dx ; Восстанавливаем AX (частное) or ax,ax ; Сравниваем AX с 0 jne Repea ; Если не ноль, то повторяем ; Теперь осталось вывести строку на экран mov ah,9 lea dx,[di+1] ; Заносим в DX адрес начала строки int 21h ; Выводим ее на экран mov ax, 4C00h ; функция DOS выхода из пpогpаммы (в AL код возврата) int 21h END Start
Решение задачи: «Выводящ= на экран десятичное значение регистра AX, выводит пустую строку»
textual
Листинг программы
Number dw 12345
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д