Записать два 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
Объяснение кода листинга программы
- Кодирование на языке Assembler — программа написана на языке Assembler
- Модель памяти — модель памяти, используемая в программе, — small
- Сегмент данных — сегмент данных, используемый в программе, — @data
- Строка с сообщением — строка с сообщением для ввода двух шестнадцатеричных цифр, — message
- Таблица символов — таблица символов, используемая для перекодировки введенных символов, — tabl
- Стек — размер стека, используемого в программе, — 256 байт
- Процедура main — процедура main, в которой находится код программы
- Загрузка сегмента данных в регистр ax — физический адрес сегмента данных загружается в регистр ax
- Загрузка адреса строки байт в регистр bx — адрес строки байт в таблице символов загружается в регистр bx
- Вывод приглашения к вводу — выводится приглашение к вводу с помощью функции 21h
- Очистка регистра ax — регистр ax очищается
- Ввод первой цифры — вводится первая цифра с помощью функции 21h
- Перекодировка первого введенного символа в al — первый введенный символ перекодируется в регистр al
- Сдвиг dl влево для освобождения места для младшей цифры — младшая цифра сдвигается влево в регистре dl
- Ввод второго символа — вводится второй символ с помощью функции 21h
- Перекодировка второго введенного символа в al — второй введенный символ перекодируется в регистр al
- Сложение для получения результата — регистры al и dl складываются
- Пересылка 4c00h в регистр ax — в регистр ax пересылается значение 4c00h
- Завершение программы — программа завершается с помощью функции 21h
- Конец процедуры main — конец процедуры main, в которой находится код программы
- Конец программы с точкой входа main — это конец программы, которая входит в процедуру main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д