Перевод числа в двоично-десятичный код - 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

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

  1. Установка модели памяти на small и использование сегментации 80386.
  2. Определение данных в сегменте данных (DB).
  3. Определение стека в сегменте данных (DB).
  4. Начало кода (START):
    • Перемещение указателя на сегмент данных в регистр AX.
    • Перемещение указателя на сегмент данных в регистр DS.
  5. Леа массива в регистр SI.
  6. Указатель на количество байтов в массиве (CX) равен 10.
  7. Цикл обработки каждого байта массива (LOOP SUM):
    • Загрузка байта из массива в регистр AL.
    • Сдвиг байта вправо на 4 бита (AAM).
    • Сдвиг результата вправо на 4 бита (SHR AX, 4).
    • Сложение двух полученных при сдвиге байтов (ADD AL, BL).
    • Увеличение результата на единицу (DAA).
    • Добавление полученного значения в регистр AH (ADC AH, BH).
    • Запись результата в регистр BX.
  8. Вывод сообщения об успешном выполнении программы (INT 21H).

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


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

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

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