Другие языки программирования и технологии

Помогите решить задачу на ассемблере!!!

"Ввести строку из нескольких слов, разделённых пробелами. Слова включают в произвольном порядке цифры, строчные и прописные латинские буквы. Отредактированная строка включает слова, начинающиеся с прописной буквы (остальные строчные). Цифры из слов должны быть удалены."
Вот вариант в ТАSM для i8086:
.model small
.stack 100h
.data
msg1 db 'Введите строку: ',0dh,0ah,'$'
msg2 db 0dh,0ah,'Результат: ',0dh,0ah
bOutput db 101 dup (?)
bInput db 100 dup (?)
.code
start: mov ax,@data
mov ds,ax
mov ah,9
lea dx,msg1
int 21h
xor di,di
m1: mov ah,8
int 21h
cmp al,0dh
je m4
or al,al
jnz m2
int 21h
jmp m1
m2: cmp di,100
je m1
cmp al,32
je m3
cmp al,'0'
jb m1
cmp al,'9'
jbe m3
cmp al,'A'
jb m1
cmp al,'Z'
jbe m3
cmp al,'a'
jb m1
cmp al,'z'
ja m1
m3: mov bInput[di],al
inc di
mov ah,6
mov dl,al
int 21h
jmp m1
m4: mov cx,di
xor di,di
xor si,si
mov ah,0dfh
m5: mov al,bInput[si]
inc si
cmp al,32
jne m6
mov ah,0dfh
jmp m8
m6: cmp al,'A'
jb m9
or ah,ah
jns m7
and al,ah
not ah
jmp m8
m7: or al,ah
m8: mov bOutput[di],al
inc di
m9: loop m5
mov al,'$'
mov bOutput[di],al
lea dx,msg2
mov ah,9
int 21h
mov ah,4ch
int 21h
end start

Программа вводит символы пробела, цифр и латинских букв. Реагирует на клавишу Enter. Все другие символы и клавиши игнорируются. Длина вводимой строки ограничена 100 символами.
Вот, собственно, и всё. Глюки возможны. :))
Евгений Разиньков
Евгений Разиньков
51 590
Лучший ответ