Сумма цифр, введенных в строке - Assembler
Формулировка задачи:
Разработать программу на языке Ассемблера Intel x86 для ОС MS-DOS. Модель памяти – не регламентируется. Все числа – однозначные (от 0 до 9). Программа ожидает ввода строки от пользователя, затем выполняет действия в соответствии с заданием. Результат отобразить на экране.
Посчитать сумму цифр, введенных в строке.
(на flat assembler) раньше изучал си подобные языки, но ассемблер это дикий лес... смог написать только следующие:format mz mov ax,cs mov ds,ax mov dx, s1 mov ah,9h int 21h mov ah,0 int 16h ; ждем нажатия любой клавиши mov ax,4c00h int 21h ;завершаем программу main: ; строка приветствия s1: db 'text$'
Решение задачи: «Сумма цифр, введенных в строке»
textual
Листинг программы
org 100h jmp start ;---- DATA ---- mes0 db 13,10,'Type Digit: $' mes1 db 13,10,'Summ......: $' ;---- CODE ---- start: mov ah,9 ;запрос на ввод mov dx,mes0 int 21h ;--- Ввод чисел ------------------- mov cx,9 ;макс.чисел xor bx,bx ;здесь будет сумма @begin: xor ax,ax ;ввод без эха int 16h cmp al,13 ;Enter - закончить! je @next cmp al,'0' ;фильтр чисел.. jb @begin cmp al,'9' ja @begin int 29h ;покажем символ and ax,0Fh ;переведём его в число add bx,ax ;суммируем в ВХ loop @begin ;промотать СХ-раз.. @next: mov ah,9 ;вывод результата mov dx,mes1 int 21h mov ax,bx ;вывод АХ на экран в DEC aam add ax,3030h rol ax,8 int 29h rol ax,8 int 29h @exit: xor ax,ax ; ждём клавишу.. int 16h mov ax,4c00h int 21h ; на выход!
Объяснение кода листинга программы
- Организация ввода
Создаются две строки:
mes0
иmes1
, которые содержат сообщения для пользователя. - Ввод чисел
Создаются две переменные:
cx
иbx
. Переменнаяcx
инициализируется значением 9, так как предполагается, что пользователь введет не более 9 цифр. Переменнаяbx
инициализируется значением 0 и будет использоваться как сумма. Используется циклwhile
, который будет выполняться до тех пор, пока пользователь не введет число от 0 до 9. - Фильтрация вводимых цифр Проверяется, является ли введенная цифра числом от 0 до 9. Если это не так, то цикл прерывается.
- Суммирование введенных цифр
Введенное число добавляется к переменной
bx
. - Вывод результата
После ввода всех цифр, программа выводит сообщение
Summ......: $
и сумму введенных цифр. - Ожидание нажатия клавиши Программа ожидает, пока пользователь не нажмет клавишу, после чего завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д