Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
caged19
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 17
1

Менять при вводе данных с клавиатуры в текстовый файл строчные символы на прописные символы

11.02.2015, 21:25. Просмотров 406. Ответов 0
Метки нет (Все метки)

Помогите исправить ошибку. На экран выводит нормально, а в файл выводит лишний символ '$'. Я так понимаю, что это исходит от строчки 56, но я не понял как она работает.
Кликните здесь для просмотра всего текста

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
assume cs:code, ds:data         ;Ассоциируем сегменты с сегментными регистрами
 
data segment                ;Начало сегмента данных         
filename db 'C:\file.txt',0         
Max_Length db 255;Max Length string
Real_Length db ? ; Real length string
string1 db 255 dup (?) 
string2 db "Vvedite stroku",0Dh,0Ah
;db "strochnimi i propisnimi bukvami"
string3 db 0Dh,0Ah,"$"
string4 db "name",10,13,'$'
string5 db "Gruppa",10,13,10,13,'$'
descr dw 100
data ends            ;Конец сегмента данных
 
code segment             ;Сегмент кода
start:               ;Точка входа в программу
 
;Настройка регистра DS
mov ax,data              ;Адрес сегмента данных в регистр ax
mov ds,ax                ;ax в ds
mov es,ax
 
mov   ah,3Ch  ;Create File
  xor   cx,cx
  lea   dx,filename
  int   21h
  mov   descr,ax
 
 
;Начало инициализации графического режима
mov ah,00            ;Функция установки графического режима
mov al,0dh           ;Установка разрешения 320x200
int 10h              ;Вывоз BIOS
 
 
mov ah,9             ;Функция вывода на экран
mov dx,offset string4        ;Выводимая строка
int 21h              ;Вызов DOS
 
mov ah,9                 ;Функция вывода на экран
mov dx,offset string5        ;Выводимая строка
int 21h              ;Вызов DOS
 
mov ah,9             ;Функция вывода на экран
mov dx,offset string2        ;Выводимая строка
int 21h              ;Вызов DOS
 
mov dx,offset Max_Length     ;Заносим в dx адрес max_length
mov ah,0Ah           ;ввод строки в буфер
int 21h              ;Прерывание DOS
 
mov cl,Real_Length       ;В cl заносим реальную длину слова
mov ch,0             ;в ch заносим 0
mov bx,cx            ;Заносим значение CX в BX
mov string1[bx],'$'
mov si,offset string1        ;Заносим значение si адрес string1
mov di,si            ;Заносим si в di
B2:                  ;Метка B2
lodsb                ;Загружаем символ
cmp al,'a'           ;Сравниваем значение регистра al с ASCII кодом "a"
jb B3
cmp al,'z'           ;Сравниваем значение регистра al с ASCII кодом "z"
ja B3
and al,11011111b         ;Инвертирование регистра буквы
B3:                  ;Метка B3
stosb                ;Переписываем содержимое AL в ES: (E)DI
loop B2              ;Повтор B2
 
mov ah,9             ;Функция вывода на экран
mov dx,offset string3        ;Выводимая строка
int 21h              ;Вызов DOS
 
mov ah,9             ;Функция вывода на экран
mov dx,offset string1        ;Выводимая строка
int 21h              ;Вызов DOS
 
 
  mov   ah,3Dh  ;Open File
  mov   al,2
  lea   dx,filename
  int   21h
  mov   descr,ax
 
mov   ah,40h  ;Record File
  mov   bx,descr
 ; mov   cx,bp
lea  cx,max_length
  lea   dx,string1
  int   21h
 
  mov   ah,3Eh  ;Close File
  mov   bx,descr
  int   21h
 
 
mov ah,0             ;Ожидание нажатия клавиши
int 16h              ;Вызов BIOS
 
mov ah,4Ch               ;Выход из программы
int 21h              ;Вызов DOS
 
;освобождение памяти (ES имеет значение при старте)
mov ax,abcd          ;Сегментный адрес конца программы
mov dx,es            ;Сегментный адрес начала программы
sub ax,dx            ;Размер программы в параграфах
mov bx,ax            ;Оставим его в BX
mov ah,4ah           ;Функция изменения размера блока
int 21h              ;Прерывание DOS
code ends            ;Конец сегмента кода
 
abcd segment 'endseg'
;Фиктивный сегмент для определения размера  программы
abcd ends
 
end start            ;Конец программы
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2015, 21:25
Ответы с готовыми решениями:

Текстовый файл: строчные латинские символы заменить на заглавные
Преобразовать текстовый файл. Строчные латинские символы заменить на заглавные латинские символы.

Во введенной строке удалить пробелы, все строчные символы «а» заменить на прописные «А»
В веденной строке удалить пробелы, все строчные символы «а» заменить на прописные «А» и вывести...

Заглавные символы кириллицы заменить на строчные латинские символы
Здравствуйте!Помогите пожалуйста решить вот эту задачку в Far менеджере.=(Заранее очень вам...

Символы псевдографики заменить на строчные латинские символы
Символы псевдографики заменить на строчные латинские символы. :resent:

Заменить заглавные символы на строчные, вставка в С++
Помогите написать программу, которая заменяет заглавные символы в строчные. Есть пример, который...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2015, 21:25

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

Заменить все латинские символы «а» на символы «А» во введенной строке
здравствуйте. помогите разработать программу, ввода строковых данных с клавиатуры. Нужно...

Заменить строчные буквы на прописные
Задача в Ассемблере (MS DOS) 2.Ввести с клавиатуры строку. Преобразовать все малые буквы в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru