Поиск буквы в строке - Assembler
Формулировка задачи:
Мне нужно написать программу, которая ищет символ s в строке и пишет сколько раз он встречается, есть такая программа, но почему-то не считает. Помогите, пожалуйста.
Листинг программы
- name a
- .model small
- .stack 100h
- .data
- mes db 'Assembler$'
- res db 'kolichestvo povtorov = $'
- .code
- main:
- mov ax,@data
- mov ds,ax
- mov al,01h ; zanosim simvol
- int 21h
- mov bx,0 ; schetchik povtorov
- mov cx,20
- m1:
- cmp mes[bx], al
- je Lequal
- eqback:
- loop m1
- jmp print
- Lequal:
- inc cx
- jmp eqback
- print:
- mov ah,09h
- mov dx,offset res
- int 21h
- mov ah,02h
- mov dx, bx
- int 21h
- end main
Решение задачи: «Поиск буквы в строке»
textual
Листинг программы
- name a
- .model small
- .stack 100h
- .data
- mes db 'Assembler$'
- len dw $-mes
- res db 'kolichestvo povtorov = $'
- .code
- main:
- mov ax,@data
- mov ds,ax
- mov ah,01h ; zanosim simvol
- int 21h
- mov bx,0 ; schetchik povtorov
- mov cx,len
- mov si,0
- m1:
- cmp mes[si], al
- jne next
- inc bx
- next:
- inc si
- loop m1
- jmp print
- print:
- mov ah,09h
- mov dx,offset res
- int 21h
- mov al,bl
- add al,'0'
- int 29h
- mov ah,1
- int 21h
- mov ax,4c00h
- int 21h
- end main
Объяснение кода листинга программы
- Объявление переменных:
- Название переменной:
mes
- Значение:
'Assembler$'
- Название переменной:
len
- Значение: длина строки
'Assembler$'
- Название переменной:
res
- Значение:
'kolichestvo povtorov = $'
- Название переменной:
- Ввод символа с клавиатуры:
mov ah,01h;
- заносим символint 21h
- вызов процедуры ввода символа
- Поиск и подсчёт совпадений:
mov bx,0
- инициализация счётчика повторовmov cx,len
- инициализация счётчика циклаmov si,0
- инициализация индекса строкиm1:
- метка начала циклаcmp mes[si], al
- сравнение символа с текущим элементом строкиjne next
- переход к следующему элементу при неравенствеinc bx
- инкремент счётчика повторовnext:
- метка для переходаinc si
- увеличение индексаloop m1
- повторение цикла для всех символовjmp print
- переход к процедуре вывода результата
- Вывод результата:
mov ah,09h
- установка номера сервиса для вывода строкиmov dx,offset res
- передача адреса строки для выводаint 21h
- вызов процедуры для вывода строкиmov al,bl
- запись значения счётчика повторов в aladd al,'0'
- конвертация числа в символint 29h
- вызов процедуры для вывода значенияmov ah,1
- установка номера сервиса для ввода символаint 21h
- вызов процедуры ввода символаmov ax,4c00h
- завершение программыint 21h
- вызов процедуры завершения программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д