Преобразование больших букв в строчные
Помогите пж-та бедному чайнику. Есть код преобразования строчных букв в большие:
input: ; Цикл ввода (посимвольно)
mov ah, 01h
int 21h
cmp al, 0Dh ; Проверка: не нажат ли Enter?
je next
mov StringS[si], al ; Заносим ASCII в строкуМ
cmp al, 61h ; Если ASCII < 61h (т.е < 'а')
jl nots
cmp al, 7ah ; Если ASCII > 7ah (т.е > 'z')
jg nots
sub al, 20h ; НЕТ? Тогда получаем ASCII большой буквы
mov StringB[si], al ; И заносим его в строкуБ
nots:
mov StringB[si], al ; Если ДА, то заносим ASCII в строкуБ без изменений
inc si
loop input
Необходимо сделать преобразование больших в строчные.
по-моему, самый простой способ, по крайней мере, самый короткий вызвать команду setbit (как-то так называется в Tasme) или сложить командой and исходное число с маской 11111111b, всё дело в пятом бите: он должен быть равен нулю для заглавных букв и 1 для строчных.
Цитата:
Originally posted by MIKE 247
по-моему, самый простой способ, по крайней мере, самый короткий вызвать команду setbit (как-то так называется в Tasme) или сложить командой and исходное число с маской 11111111b, всё дело в пятом бите: он должен быть равен нулю для заглавных букв и 1 для строчных.
по-моему, самый простой способ, по крайней мере, самый короткий вызвать команду setbit (как-то так называется в Tasme) или сложить командой and исходное число с маской 11111111b, всё дело в пятом бите: он должен быть равен нулю для заглавных букв и 1 для строчных.
А с рускими малость веселее.В 866 разбиваются на две части:
1) 80h - 0AFh (А - п)
2) 0E0h-0EFh. (р - я)
(Хотя для многих это неважно :) )