Программа, которая вставляет пробел, когда символ в верхнем регистре следует за символом в нижнем.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string db _"TheQuickBrownFox$"
- ____strlen equ ($-string)
- ____newstr db _strlen+4 dup(24h)
- data ends
- code segment public
- ____assume ds:data, cs:code
- ____main proc
- ________mov ____ax, seg data
- ________mov ____ds, ax
- ________mov ____es, ax
- ________mov ____cx, strlen
- ________lea ____di, es:[newstr]
- ________lea ____si, ds:[string]
- ________call____ChangeString
- ________mov ____ah, 09h
- ________lea ____dx, ds:[newstr]
- ________int ____21h
- ________mov ____ax, 4C00h
- ________int ____21h
- ____main endp
- ____ChangeString proc
- ________push ___ax
- ________push ___cx
- ________push ___si
- ________push ___di
- ________jmp ____Continue
- ____CheckStringLoop:
- ________cmp ____byte ptr[si], 41h
- ________jb _____Continue
- ________cmp ____byte ptr[si], 5Ah
- ________ja _____Continue
- ________cmp ____byte ptr[si-1], 61h
- ________jb _____Continue
- ________cmp ____byte ptr[si-1], 7Ah
- ________ja _____Continue
- ________mov ____byte ptr[di], 20h
- ________mov ____al, byte ptr[si]
- ________mov ____byte ptr[di+1], al
- ________inc ____si
- ________add ____di, 2
- ________loop ___CheckStringLoop
- ____Continue:
- ________movsb
- ________loop ___CheckStringLoop
- ________pop ____di
- ________pop ____si
- ________pop ____cx
- ________pop ____ax
- ________ret
- ____ChangeString endp
- code ends
- end main