Перевести значения из memory в программный код - Assembler

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

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

Здравствуйте! если есть у кого-нибудь какие-нибудь соображения буду весьма сознателен! Задача: Перевести значения из memory в программный код! на верхнем рисунке code segment, снизу data segment code segment я преобразовал!
    mov ax, data
    mov ds, ax
    mov es, ax
MOV AH, 09H
MOV DX, 0H
INT 21H
XOR AX, AX
MOV AH, 1H
INT 21H
MOV DL, AL
SUB DL, 30H
CMP DL, 9H
JLE METKA1
SUB DL, 7H
METKA1:
MOV CL, 4H
SHL DL, CL
INT 21H
SUB AL, 30H
CMP AL, 9H
JLE METKA2
SUB AL, 7H
METKA2:
ADD DL, AL
MOV AX, 4C00H
INT 21H
он верный, перепроверял!

СОБСТВЕННО ВОПРОС КУДА "ВСУНУТЬ" data segment и каким образом???????

Решение задачи: «Перевести значения из memory в программный код»

textual
Листинг программы
;TASM, сохранять в 866 кодовой странице.
.model  small
.data
dannii  db 'Введите две шестнадцатеричные цифры,$'
.stack
.code
start:
    mov ax, @data
    mov ds, ax
    mov es, ax
    MOV AH, 09H
    MOV DX, offset dannii
    INT 21H
    XOR AX, AX
    MOV AH, 1H
    INT 21H
    MOV DL, AL
    SUB DL, 30H
    CMP DL, 9H
    JLE METKA1
    SUB DL, 7H
METKA1:
    MOV CL, 4H
    SHL DL, CL
    INT 21H
    SUB AL, 30H
    CMP AL, 9H
    JLE METKA2
    SUB AL, 7H
METKA2:
    ADD DL, AL
    MOV AX, 4C00H
    INT 21H
    end start

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

Данный код на языке Assembler выполняет следующие действия:

  1. Ввод двух шестнадцатеричных цифр с клавиатуры в переменную dannii. (Введённые цифры будут сохранены в регистре AL)
  2. Перевод строки в нижний регистр. (результат будет сохранен в регистре DL)
  3. Сравнение введённых цифр с числом 9. (Если введена цифра от 0 до 8, то выполняется блок METKA1, иначе выполняется блок METKA2)
  4. Выполнение операции сдвига влево на 4 позиции для переменной DL. (результат будет сохранен в регистре DL)
  5. Сравнение результата сдвига с числом 9. (Если результат сдвига от 0 до 8, то выполняется блок METKA2, иначе выполняется блок METKA1)
  6. Выполнение операции сложения для переменных DL и AL. (результат будет сохранен в регистре DL)
  7. Запись в регистр AX значения 4C00H. (что соответствует команде RET в языке C)
  8. Вызов функции INT 21H для выполнения команды RET. (которая завершает выполнение программы)

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


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

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

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