Подсчет количества слов на заданную букву - Assembler
Формулировка задачи:
Здравствуйте, не могу составить программу,которая подсчитывает количество слов на заданную букву. Всегда в количестве выдает 0, помогите пожалуйста.
EXTRN Cursor:Far,Clear:Far,Write_Str:Far,Vvod:Far,Vyvod:Far ;------------------ Сегмент стека ------------------------- Stacksg SEGMENT PARA STACK DW 128 DUP(?) Stacksg ENDS ;--------------------- Сегмент данных--------------------- Datasg SEGMENT PARA STR1 LABEL BYTE MAXLEN DB 100 STRLEN DB ? FIELD DB 100 dup("$") STR2 DB " $" A DB 0 B DB 0 Datasg ENDS ;---------------------Кодовый сегмент -------------------- Codesg SEGMENT PARA begin PROC FAR ;Пролог EXE-программы. ;Выполнение первого требования. ASSUME CS:Codesg, DS:Datasg, SS:Stacksg ;Выполнение второго требования. PUSH DS ; Записать DS в стек. ;Выполнение третьего требования. XOR AX,AX ; Установить в нуль AX. PUSH AX ; Записать AX в стек. ;Выполнение четвертого требования. MOV AX,Datasg ; Занести адрес MOV DS,AX ; Datasg в DS. ;Завершение пролога EXE-программы. CALL Clear MOV DX,0000H CALL Cursor ; Ввод строки MOV ah,0AH LEA DX,STR1 int 21h R2: mov cx,0 mov cl,strlen mov di,0 L1: mov bl, byte ptr FIELD[di] cmp bl, 41h ; "A" jb sled ; if <= cmp bl, 5AH ; "Z" ja sled add bl, 20H mov byte ptr FIELD[di],bl ; возвращаем на место sled: inc di loop L1 MOV dx,0200H CALL Cursor MOV ah,01 ; ввод буквы int 21h mov bl, al cmp bl, 41h ; "A" jb S3 ; if <= cmp bl, 5AH ; "Z" ja S3 add bl, 20H mov A,bl S3: CLD ; проверка первого слова MOV B,' ' MOV AX,0 ; счетчик MOV DI,0 MOV BL, byte ptr FIELD[DI] CMP BL,A ; сравнение с буквой JNZ M31 ; esli ne nol INC AX M31: INC DI ;M3: ; ?????? MOV DX,0300H CALL Cursor MOV BX,AX CALL Vyvod RET begin ENDP Codesg ENDS END begin
Решение задачи: «Подсчет количества слов на заданную букву»
textual
Листинг программы
mess db 13,10,'Type string: $'
Объяснение кода листинга программы
- Задается строка
Type string: $
- Используется директива db для определения переменной mess как строки, состоящей из двух символов - 13 и 10. 13 - это символ перевода строки, а 10 - символ возврата каретки.
- В данной строке присутствует символ '$', который используется для обозначения конца строки в ассемблере.
- В данном коде нет никаких действий, связанных с подсчетом количества слов на заданную букву.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д