Записать в регистр AL количество двухзначных десятичных чисел (от 10 до 99), сумма цифр которых равна k - Assembler
Формулировка задачи:
Пусть k – байтовая переменная со значением от 1 до 18. Записать в регистр AL количество двухзначных десятичных чисел (от 10 до 99), сумма цифр которых равна k.
Решение задачи: «Записать в регистр AL количество двухзначных десятичных чисел (от 10 до 99), сумма цифр которых равна k»
textual
Листинг программы
- .model small
- .386
- .data
- k db 15
- .stack
- db 255 dup(?)
- .code
- start:
- mov ax,@data
- mov ds,ax
- xor al,al
- mov cx,10
- search:
- push cx
- call crack
- cmp dl,k
- jne skip
- inc al
- skip:
- inc cx
- cmp cx,100
- jne search
- mov ah,02h
- mov dl,al
- add dl,30h
- int 21h
- mov ah,4Ch
- mov al,00h
- int 21h
- crack proc
- push bp
- mov bp,sp
- push ax
- mov ax,[bp+4]
- mov bl,10
- div bl
- add al,ah
- mov dl,al
- pop ax
- pop bp
- retn 2
- crack endp
- end start
Объяснение кода листинга программы
- Подключение необходимых заголовочных файлов: .model small .386
- Определение данных: k db 15
- Выделение стека: .stack db 255 dup(?)
- Начальный код программы: start: mov ax,@data mov ds,ax xor al,al mov cx,10 search: push cx call crack cmp dl,k jne skip inc al skip: inc cx cmp cx,100 jne search
- Вывод результата: mov ah,02h mov dl,al add dl,30h int 21h
- Завершение работы программы: mov ah,4Ch mov al,00h int 21h
- Определение процедуры crack: crack proc push bp mov bp,sp mov ax,[bp+4] mov bl,10 div bl add al,ah mov dl,al pop ax pop bp retn 2 crack endp
- Окончание кода программы: end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д