Подсчет количества слов на заданную букву - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, не могу составить программу,которая подсчитывает количество слов на заданную букву. Всегда в количестве выдает 0, помогите пожалуйста.
Листинг программы
  1. EXTRN Cursor:Far,Clear:Far,Write_Str:Far,Vvod:Far,Vyvod:Far
  2. ;------------------ Сегмент стека -------------------------
  3. Stacksg SEGMENT PARA STACK
  4. DW 128 DUP(?)
  5. Stacksg ENDS
  6. ;--------------------- Сегмент данных---------------------
  7. Datasg SEGMENT PARA
  8. STR1 LABEL BYTE
  9. MAXLEN DB 100
  10. STRLEN DB ?
  11. FIELD DB 100 dup("$")
  12. STR2 DB " $"
  13. A DB 0
  14. B DB 0
  15. Datasg ENDS
  16. ;---------------------Кодовый сегмент --------------------
  17. Codesg SEGMENT PARA
  18. begin PROC FAR
  19. ;Пролог EXE-программы.
  20. ;Выполнение первого требования.
  21. ASSUME CS:Codesg, DS:Datasg, SS:Stacksg
  22. ;Выполнение второго требования.
  23. PUSH DS ; Записать DS в стек.
  24. ;Выполнение третьего требования.
  25. XOR AX,AX ; Установить в нуль AX.
  26. PUSH AX ; Записать AX в стек.
  27. ;Выполнение четвертого требования.
  28. MOV AX,Datasg ; Занести адрес
  29. MOV DS,AX ; Datasg в DS.
  30. ;Завершение пролога EXE-программы.
  31. CALL Clear
  32. MOV DX,0000H
  33. CALL Cursor
  34. ; Ввод строки
  35. MOV ah,0AH
  36. LEA DX,STR1
  37. int 21h
  38. R2:
  39. mov cx,0
  40. mov cl,strlen
  41. mov di,0
  42. L1: mov bl, byte ptr FIELD[di]
  43. cmp bl, 41h ; "A"
  44. jb sled ; if <=
  45. cmp bl, 5AH ; "Z"
  46. ja sled
  47. add bl, 20H
  48. mov byte ptr FIELD[di],bl ; возвращаем на место
  49. sled: inc di
  50. loop L1
  51. MOV dx,0200H
  52. CALL Cursor
  53. MOV ah,01 ; ввод буквы
  54. int 21h
  55. mov bl, al
  56. cmp bl, 41h ; "A"
  57. jb S3 ; if <=
  58. cmp bl, 5AH ; "Z"
  59. ja S3
  60. add bl, 20H
  61. mov A,bl
  62. S3: CLD ; проверка первого слова
  63. MOV B,' '
  64. MOV AX,0 ; счетчик
  65. MOV DI,0
  66. MOV BL, byte ptr FIELD[DI]
  67. CMP BL,A ; сравнение с буквой
  68. JNZ M31 ; esli ne nol
  69. INC AX
  70. M31:
  71. INC DI
  72. ;M3:
  73. ; ??????
  74. MOV DX,0300H
  75. CALL Cursor
  76. MOV BX,AX
  77. CALL Vyvod
  78. RET
  79. begin ENDP
  80. Codesg ENDS
  81. END begin

Решение задачи: «Подсчет количества слов на заданную букву»

textual
Листинг программы
  1. mess   db  13,10,'Type string: $'

Объяснение кода листинга программы

  1. Задается строка Type string: $
  2. Используется директива db для определения переменной mess как строки, состоящей из двух символов - 13 и 10. 13 - это символ перевода строки, а 10 - символ возврата каретки.
  3. В данной строке присутствует символ '$', который используется для обозначения конца строки в ассемблере.
  4. В данном коде нет никаких действий, связанных с подсчетом количества слов на заданную букву.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы