Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2011, 21:07   #1
Grisha18
Новичок
Джуниор
 
Регистрация: 20.04.2011
Сообщений: 1
По умолчанию Асемблер. Работа со строками. Проблема в программе.

Доброго времени суток, очень прошу вас помочь исправить неполадку в программе.

Задание такое: Ввести строку содержащую несколько точек. Программа должна после каждой точки добавлять пробел и следующую букву делать заглавной.

Программа всё выполняет, за исключением того что вместо первого символа после пробела она делает заглавным второй, и я не пойму в чем проблема, когда указываю смешение регистра на моменте установки большой буквы [bx-1] программа не делает большой буквы ни где.

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

Код программы.

data segment
Buff db 250, ?, 250 dup (?)
Mess1 db 'Input String', 10, 13, '$'
LN db 10, 13, '$'
Mess2 db 'Press any key..', 10, 13, '$'
data ends

code segment
assume cs: code, ds: data


start:
mov ax, data
mov ds, ax
; ¬ывод сообщени€ и ввод строки
mov ah, 09h
lea dx, mess1
int 21h

mov ah, 0ah
lea dx, Buff
int 21h

lea bx, Buff+2

mov cl, [bx+1]
xor ch, ch

cikl:
mov al, [bx]
cmp al, '.'
jne next
push cx
push bx
inc bx
mov ah, [bx]
cmp ah, ' '
jne vst
sub byte ptr [bx], 32
pop bx
pop cx
jmp next
vst:
mov byte ptr [bx], ' '
inc bx
sub byte ptr [bx], 32
cikl2:
mov al, [bx]
mov [bx], ah
mov ah, al
inc bx
loop cikl2
obh:
mov [bx], ah
pop bx
pop cx
inc cx
jmp next
;spc:
; cmp al, ' '
; jne next
; cmp byte ptr [bx+2], 'a'
; jl next
; cmp byte ptr [bx+2], 'z'
; jg next
; sub byte ptr [bx+2], 32
next:
inc bx
loop cikl
mov byte ptr [bx], '$'

lea bx, buff
mov ah, 09h
lea dx, buff+2
int 21h
mov ah, 09h
lea dx, LN
int 21h
quit:
mov ah, 09h
lea dx, mess2
int 21h
mov ah, 08h
int 21h
mov ax, 4c00h
int 21h
code ends
end start
Grisha18 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Проблема со строками :( coNsept Общие вопросы C/C++ 2 20.01.2010 00:31
работа со строками. проблема Slash Общие вопросы Delphi 3 21.06.2007 16:46