Перевод числа в двоично-десятичный код - Assembler
Формулировка задачи:
Есть задание: Сформировать массив из 10 однобайтных чисел, перевести их в двоично-десятичный код, сложить. Результат поместить в регистр BX.
Конкретно не понятен тот факт, как перевести числа в двоично-десятичный код. Кто может помочь?
Решение задачи: «Перевод числа в двоично-десятичный код»
textual
Листинг программы
.model small .386 .data var db 97,89,57,95,72,84,73,87,68,67 .stack db 255 dup(?) .code start: mov ax,@data mov ds,ax lea si,var mov cx,10 sum: lodsb aam shl al,4 shr ax,4 add al,bl daa adc ah,bh mov bx,ax loop sum mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
- Установка модели памяти на
small
и использование сегментации 80386. - Определение данных в сегменте данных (DB).
- Определение стека в сегменте данных (DB).
- Начало кода (START):
- Перемещение указателя на сегмент данных в регистр AX.
- Перемещение указателя на сегмент данных в регистр DS.
- Леа массива в регистр SI.
- Указатель на количество байтов в массиве (CX) равен 10.
- Цикл обработки каждого байта массива (LOOP SUM):
- Загрузка байта из массива в регистр AL.
- Сдвиг байта вправо на 4 бита (AAM).
- Сдвиг результата вправо на 4 бита (SHR AX, 4).
- Сложение двух полученных при сдвиге байтов (ADD AL, BL).
- Увеличение результата на единицу (DAA).
- Добавление полученного значения в регистр AH (ADC AH, BH).
- Запись результата в регистр BX.
- Вывод сообщения об успешном выполнении программы (INT 21H).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д