Определить первую и последнюю цифры числа - Assembler
Формулировка задачи:
2.Написать и протестировать функцию,которая по заданному натуральному числу определяет его первую и последнюю цифры.
Решение задачи: «Определить первую и последнюю цифры числа»
textual
Листинг программы
@stack segment para stack db 1024 dup(?) @stack ends @data segment N dw 45678 First db ? Last db ? MsgFirst db 'The First digit: ' FirstChar db ? db 0Dh, 0Ah db 'The Last digit: ' LastChar db ? CrLf db 0Dh, 0Ah, '$' @data ends @code segment assume cs:@code, ds:@data, ss:@stack main proc ;инициализация сегментного регистра данных mov ax, @data mov ds, ax mov ax, [N] call GetFirstLastDigits mov [Last], al mov [First],ah ;Преобразование результата для вывода на экран add ax, '00' mov [LastChar], al mov [FirstChar], ah ;вывод результата mov ah, 09h lea dx, [MsgFirst] int 21h ;завершение программы mov ax, 4C00h int 21h main endp ;Функция возвращает первую и последнюю цифры числа ;на входе: ; ax - число ;на выходе: ; al - последняя (младшая) цифра числа ; ah - первая (старшая) цифра числа GetFirstLastDigits proc push bx push cx push dx ;записываем в стек цифры заданного числа mov bx, 10 ;делитель mov cx, 0 ;количество цифр в числе @@While: mov dx, 0 div bx push dx inc cx cmp ax, 0 jnz @@While ;извлекаем цифры из стека mov ah, dl ;запоминаем первую цифру @@For: pop dx loop @@For mov al, dl pop dx pop cx pop bx ret GetFirstLastDigits endp @code ends end main
Объяснение кода листинга программы
В этом коде на языке Assembler выполняется следующая последовательность действий:
- Инициализация сегментного регистра данных
- Загрузка числа в регистр ax
- Вызов функции GetFirstLastDigits
- Сохранение результата в регистрах al и ah
- Преобразование результата для вывода на экран
- Вывод результата на экран
- Завершение программы Функция GetFirstLastDigits выполняет следующие действия:
- Записывает цифры числа в стек
- Извлекает цифры из стека и сохраняет их в регистрах ah и al В коде используются следующие переменные: — N - число, для которого необходимо определить первую и последнюю цифры — First - первая (старшая) цифра числа — Last - последняя (младшая) цифра числа — FirstChar - переменная для сохранения первой цифры в формате символа — LastChar - переменная для сохранения последней цифры в формате символа — MsgFirst - строка сообщения для вывода первой цифры — LastChar - строка сообщения для вывода последней цифры — CrLf - строка символов для перевода строки В коде используются следующие команды: — mov - перенос значения одной переменной в другую — call - вызов функции — push - сохранение значения переменной в стеке — pop - извлечение значения переменной из стека — div - деление одной переменной на другую — cmp - сравнение двух переменных — jnz - переход к следующему действию, если значение переменной не равно нулю — inc - увеличение значения переменной на единицу — loop - повторение цикла определенное количество раз — ret - возврат из функции с указанным значением
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д