Записать два hex-числа, выполнить простейшую математическую операцию, вывести результат на экран - Assembler

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

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

Написать программу: Записать два 16-ых числа, выполнить простейшую математическую операцию, вывести результат на экран. Если можно с комментариями, помогите начинающему...
mov ax,0a5h
mov bx,0f2h
add ax,bx
sub ax,bx
mov ah, 04Ch
int 21h
Верно ли я пишу?

Решение задачи: «Записать два hex-числа, выполнить простейшую математическую операцию, вывести результат на экран»

textual
Листинг программы
model small
.data                    ;сегмент данных
message    db      "Введите две шестнадцатеричные цифры,$"
tabl       db      48 dup (0),0,1,2,3,4,5,6,7,8,9, 7 dup (0)
           db      0ah,0bh,0ch,0eh,0dh,0fh,27 dup (0)
           db      0ah,0bh,0ch,0dh,0eh,0fh, 153 dup (0)
.stack     256     ;сегмент стека
.code
;начало сегмента кода
    main proc   ;начало процедуры main
    mov     ax,@data        ;физический адрес сегмента данных в регистр ax
    mov     ds,ax   ;ax записываем в ds
    lea       bx,tabl ;загрузка адреса строки байт в регистр bx
    mov     ah,9
    mov     dx,offset message
    int       21h     ;вывести приглашение к вводу
    xor      ax,ax  ;очистить регистр ax
    mov     ah,1h ;значение 1h в регистр ah
    int       21h     ;вводим первую цифру в al
    xlat                ;перекодировка первого введенного символа в al
    mov     dl,al
    shl       dl,4    ;сдвиг dl влево для освобождения места для младшей цифры
    int       21h     ;ввод второго символа в al
   xlat                ;перекодировка второго введенного символа в al
    add     al,dl   ;складываем для получения результата
    mov     ax,4c00h        ;пересылка 4c00h в регистр ax
    int       21h     ;завершение программы
endp  main    ;конец процедуры main
end main    ;конец программы с точкой входа main

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

  1. Кодирование на языке Assembler — программа написана на языке Assembler
  2. Модель памяти — модель памяти, используемая в программе, — small
  3. Сегмент данных — сегмент данных, используемый в программе, — @data
  4. Строка с сообщением — строка с сообщением для ввода двух шестнадцатеричных цифр, — message
  5. Таблица символов — таблица символов, используемая для перекодировки введенных символов, — tabl
  6. Стек — размер стека, используемого в программе, — 256 байт
  7. Процедура main — процедура main, в которой находится код программы
  8. Загрузка сегмента данных в регистр ax — физический адрес сегмента данных загружается в регистр ax
  9. Загрузка адреса строки байт в регистр bx — адрес строки байт в таблице символов загружается в регистр bx
  10. Вывод приглашения к вводу — выводится приглашение к вводу с помощью функции 21h
  11. Очистка регистра ax — регистр ax очищается
  12. Ввод первой цифры — вводится первая цифра с помощью функции 21h
  13. Перекодировка первого введенного символа в al — первый введенный символ перекодируется в регистр al
  14. Сдвиг dl влево для освобождения места для младшей цифры — младшая цифра сдвигается влево в регистре dl
  15. Ввод второго символа — вводится второй символ с помощью функции 21h
  16. Перекодировка второго введенного символа в al — второй введенный символ перекодируется в регистр al
  17. Сложение для получения результата — регистры al и dl складываются
  18. Пересылка 4c00h в регистр ax — в регистр ax пересылается значение 4c00h
  19. Завершение программы — программа завершается с помощью функции 21h
  20. Конец процедуры main — конец процедуры main, в которой находится код программы
  21. Конец программы с точкой входа main — это конец программы, которая входит в процедуру main

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


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

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

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