Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
2 / 2 / 0
Регистрация: 18.11.2010
Сообщений: 33
1

Заменить строчные буквы на прописные

13.05.2011, 11:10. Показов 3293. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача в Ассемблере (MS DOS)
2.Ввести с клавиатуры строку. Преобразовать все малые буквы в боль¬шие. Вывести результаты на экран.
Знаю что задача должна или может начинаться с:
Assembler
1
2
3
4
5
6
7
8
9
10
data segment
COUNT db 10 dup (0)             ; счетчик количества цифр
CIFR db ‘0123456789ABCDEF’  ; таблица преобразования цифр
IN_STR db 80, ?, 82 dup (?)         ; буфер ввода
OUT_STR db 0Dh, 0Ah, ?,-,?, ?,$’     ; буфер вывода
data ends
code segment
assume cs:code, ds:data
START:  mov ax, data 
        mov ds, ax
и заканчиватся:
Assembler
1
2
3
4
QUIT:   mov ax, 4C00h   ; Код завершения 0
        int 21h     ; Выход в DOS
code ends
end START
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2011, 11:10
Ответы с готовыми решениями:

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

Заменить строчные буквы на прописные
Решите пожалуста! 1. Преобразовать символьную строку заданной длины, изменив все строчные буквы...

Заменить строчные буквы на прописные (UpCase)
6. Задана строка из смеси русских строчных и заглавных букв. Преобразовать её в строку из тех же...

Заменить строчные буквы на прописные (UpCase)
hi ALL плз помоги с лабораторкой Ввести с клавиатуры строку (использовать только латинские...

1
7 / 6 / 0
Регистрация: 10.01.2010
Сообщений: 56
13.05.2011, 17:37 2
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
;Прога #1e
 
;--------------------------Сегмент данных----------------------
DATA  SEGMENT PARA PUBLIC 'DATA' USE16
      nxt    db 0ah,0dh,'$'
      dialog1  db 'BBeguTe cTpoKy:',0ah,0dh,'$'               ;Строка диалога с пользователем
      dialog2  db '<<Programm 1e - npeo6pa3oBaHue cuMBoJIoB cTpoKu B BepxHuu/Hu}|{Huu perucTp>>',0ah,0dh,0ah,0dh,'$'   ;Строка диалога с 
      buffer1 db 100 dup(0),'$'                               ;Буфер, в который будет записана строка1
      buffer2 db 100 dup(0),'$'                               ;Буфер, в который будет записана строка в верхнем регистре
      buffer3 db 100 dup(0),'$'                               ;Буфер, в который будет записана строка в нижнем регистре
DATA ENDS
;--------------------------------------------------------------
 
 
 
;------------------Сегмент кода программы----------------------
CODE SEGMENT PARA PUBLIC 'CODE' USE16
      assume CS:CODE,DS:DATA,SS:SSEG
      include IntToStr.asm                                    ;Подлкючаем файл с процедурой IntToStr - перевод бинарного числа в строку
 
;-------Процедура MAIN-------
main  proc 
   ;---Загружаем в регистр ds адрес сегмента данных:                             
      mov ax,data
      mov ds,ax
 
   ;---Чистим экран:     
      mov ax,3                            
      int 10h  
 
   ;---Вывод диалога на экран:
      mov ah, 09h       
      lea dx, dialog2
      int 21h
 
   ;---Вывод сообщения на экран:
      mov ah, 09h       
      lea dx, dialog1
      int 21h
 
   ;---Ввод строки пользователем:
      mov bx, 0
      mov cx, 32h
      lea dx, buffer1
      mov ah, 3fh       
      int 21h
  
   ;---Переводим символы строки в нижний и верхний регистр:
      call Regs
     
   ;---Вывод результата на экран:
      call next
      mov ah, 09h       
      lea dx, buffer2
      int 21h 
      call next 
 
   ;---Вывод результата на экран:
      mov ah, 09h       
      lea dx, buffer3
      int 21h 
 
   ;---Выход из программы:
      call getch
      mov ax,4c00h      
      int 21h
 
main endp
;----------------------------
 
 
;-----Процедура Regs-----
;---Преобразовываем символы исходной строки в верхний регистр и копируем их в результирующюю строку:
Regs proc
      push dx
      push bx
      push cx
      push si
 
   ;---Преобразовываем символы исходной строки в верхний регистр и копируем их в результирующюю строку:
      mov si, 0                                ;Регистр si - позиция текущего символа в строке            
      mov ax, 0
    label1:                                   
      mov al, [buffer1+si]                     ;Считываем текущий символ в исходной строке
      cmp al, 97                               ;Сравниваем его ANSII код с 97 (буква "a")
      jb no1                                   ;Если код символа меньше кода 97, значит символ не в нижнем регистре -> переходим на метку no1
      cmp al, 122                              ;Сравниваем его ANSII код с 122 (буква "z")
      ja no1                                   ;Если код символа больше кода 122, значит символ не буква -> переходим на метку no1
      sub al, 32                               ;Иначе отнимаем 32 (переводим в верхний регистр)
    no1:      
      mov [buffer2+si], al                     ;Копируем текущий символ в результирующую строку
      inc si
      cmp al, ah                               ;Сравниваем прочитанный символ с 0 
      jne label1                               ;Пока не встречен 0, продолжаем преобразование строки
 
      mov [buffer2+si], '$'                    ;Дополняем строку символом-ограничителем
 
   ;---Преобразовываем символы исходной строки в нижний регистр и копируем их в результирующюю строку:
      mov si, 0                                ;Регистр si - позиция текущего символа в строке            
      mov ax, 0
    label2:                                   
      mov al, [buffer1+si]                     ;Считываем текущий символ в исходной строке
      cmp al, 65                               ;Сравниваем его ANSII код с 65 (буква "A")
      jb no2                                   ;Если код символа меньше кода 65, значит символ не буква -> переходим на метку no2
      cmp al, 90                               ;Сравниваем его ANSII код с 90 (буква "Z")
      ja no2                                   ;Если код символа больше кода 122, значит символ не в верхнем регистре -> переходим на метку no21
      add al, 32                               ;Иначе прибавляем 32 (переводим в нижний регистр)
    no2:      
      mov [buffer3+si], al                     ;Копируем текущий символ в результирующую строку
      inc si
      cmp al, ah                               ;Сравниваем прочитанный символ с 0 
      jne label2                               ;Пока не встречен 0, продолжаем преобразование строки
 
      mov [buffer3+si], '$'                    ;Дополняем строку символом-ограничителем
 
      pop si
      pop cx
      pop bx
      pop dx
      ret
Regs endp
;----------------------------
 
 
;процедура - ожидание нажатия клавиши
getch proc   
      mov ah,01h
      int 21h
      ret
getch endp
;----------------------------
 
 
;процедура - перевод строки
next  proc   
      mov ah, 09h
      lea dx, nxt
      int 21h 
      ret     
next endp
;----------------------------
 
CODE ENDS
;---------------------------------------------------------------
 
 
 
;----------------------Сегмент стека программы------------------
SSEG  SEGMENT PARA STACK 'STACK' USE16
      DB 100h DUP(0)
SSEG ENDS
;---------------------------------------------------------------
 
END main


как то так...
0
13.05.2011, 17:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2011, 17:37
Помогаю со студенческими работами здесь

Заменить строчные буквы на прописные (UpCase)
Нужно ввести с клавиатуры строку. Преобразовать все малые буквы в большие. Вывести результаты на...

Заменить строчные буквы на прописные, цифры повторить дважды
Распечатайте введенную строку. В данной строке нужно заменить строчные буквы на прописные и...

Для массива ASCII-символов произвести сортировку, вывести только строчные буквы, прописные преобразовать в строчные
Ввести массив из произвольных ASCII-символов(цикл и 01h) и произвести её сортировку или выборку под...

Преобразовать строчные буквы в прописные
не выводит на экран конечный результат code segment assume cs:code,ds:data main...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru