1 / 1 / 0
Регистрация: 09.03.2018
Сообщений: 30
1

Ввести с клавиатуры произвольную строку символов и выдать на экран количество введенных символов

09.03.2020, 16:30. Показов 2085. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Cоставить программу которая вводит с клавиатуры произвольную строку символов (конец строки клавиша enter) и выдает на экран количество введенных символов в десятичном виде и контрольную сумму кодов символов строки в шестнадцатеричном виде.

Как это хоть приблизительно сделать?

Например:
Введите строку:
ALFA
Количество символов 4
Контрольная сумма (41+c4+64+41) = 1AA

Вывод строки на экран 9 функция 21h-прерывания
Пример вывода строки с помощью 9 функции 21h-прерывания

Assembler
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
dataseg ;сегмент данных
Strokal db "Количество символов $"
 
 
codeseg ;сегмент кода
      lea dx, Strokal
      mov ah,9
      int 21h
 
;процедура вывода однобайтового числа в 16 форме
        proc write_16
        push AX
        push CX
        push DX
        and DX,00f0h
        mov cl,4
        shr dx,cl
        add dl,30h
        cmp dl,'9'
        jbe @@1
        add dl,7
@@1:    call wr_sim
        pop dx
        and dx,000fh
        add dl,30h
        cmp dl,"9"
        jbe @@2
        add dl,7
@@2:    call wr_sim
        pop cx
        pop ax
        ret
        andp write_16
        
;ввод символа
        proc wr_sim
        push ax
        mov ah,2
        int 21h
        pop ax
        ret
        endp wr_sim
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2020, 16:30
Ответы с готовыми решениями:

Ввести строку символов, посчитать количество символов, не являющихся буквами английского алфавита
Ввести строку символов, если ее длина >6, то посчитать количество символов, не являющихся буквами...

Ввести строку символов. Найти количество неповторяющихся символов
Ввести строку символов. Найти количество неповторяющихся символов. Вот мой текст программы...

Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну строку не более 50 символов и выводит на экран позиции вхождени
Задание: Написать программу, которая вводит с клавиатуры строку не более 100 символов, еще одну...

Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и выводит результ
- Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и...

1
Модератор
Эксперт по электронике
8319 / 4218 / 1602
Регистрация: 01.02.2015
Сообщений: 13,138
Записей в блоге: 4
09.03.2020, 18:25 2
Лучший ответ Сообщение было отмечено Tonia_ как решение

Решение

А для ввода символов используйте функцию 02h прерывания 21h
Описания смотрите
http://www.codenet.ru/progr/dos/
http://www.ctyme.com/intr/int.htm

Добавлено через 6 минут
Я смотрю, что процедуры ввода и вывода у вас уже имеются. Осталось из правильно расположить.
Структура программы будет такой
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
.model small
 
.stack 200h
 
.data
    CrLf        db  0Dh, 0Ah, '$'
    msgResult   db  'Result array:', 0Dh, 0Ah, '$'
    msgPressAnyKey  db  0Dh, 0Ah, 'Press any key to exit...', '$'
.code
 
main    proc
    ;инициализация сегментного регистра ds адресом сегмента данных
    mov ax,     @data
    mov ds, ax
 
......................
здесь код
......................
 
        ;ожидание нажатия любой клавиши
    mov ah, 00h
    int 16h
 
    ;завершение программы
    mov ax, 4C00h
    int 21h
main    endp
 
;процедура вывода однобайтового числа в 16 форме
proc write_16
        push AX
        push CX
        push DX
        and DX,00f0h
        mov cl,4
        shr dx,cl
        add dl,30h
        cmp dl,'9'
        jbe @@1
        add dl,7
@@1:    call wr_sim
        pop dx
        and dx,000fh
        add dl,30h
        cmp dl,"9"
        jbe @@2
        add dl,7
@@2:    call wr_sim
        pop cx
        pop ax
        ret
endp write_16
        
;ввод символа
proc wr_sim
        push ax
        mov ah,2
        int 21h
        pop ax
        ret
endp wr_sim
 
end main
Добавлено через 3 минуты
Ввод строки (массива) алгоритмически будет таким
C
1
2
3
4
5
6
7
8
9
10
char s[100]; //строка
int n=0; //длина строки
 
do{
  al=getch(); //это вызов функции 02h int 21h
  if(al==enter)
    break;
  s[n]=al;
  n=n+1;
}while(1);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2020, 18:25
Помогаю со студенческими работами здесь

Добавить в произвольную строку разделители через равное количество символов
Привет. Как добавить в произвольную строку разделители через равное количество символов? Считая с...

Ввести с клавиатуры строку. Выдать на экран все слова из этой строки ...
Помогите сделать 2 задачи на С 1 Ввести с клавиатуры строку. Выдать на экран все слова из...

Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и выводит результат на дисплей в виде строки
- Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и...

Исключить из введенной строки символ, введенный с клавиатуры. Вывести на экран количество удаленных символов и строку
При вводе строки символ удаляется только из первого слова. Как сделать, чтобы он удалялся из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru