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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2015, 10:54   #1
joe cross
Новичок
Джуниор
 
Регистрация: 01.11.2015
Сообщений: 1
По умолчанию Из строчных в заглавные и наоборот

Нужно написать программу, которая преобразует заглавные буквы S в строчные s, а строчные a в заглавные A.
Код не работает (выводит на экран непонятные символы). В чем ошибка?

Код:
DATASG SEGMENT PARA                         ;Открыть сегмент данных
MYTEXT DB 'aSSembler AsSembler' ,13,10, '$'     ;Объявить переменную MYTEXT
DATASG ENDS                                 ;Закрыть сегмент данных
STACKSG SEGMENT 'Stack'		            ;Открыть сегмент стека
DB 12 DUP(?)                                ;Стек размером 12 байт
STACKSG ENDS                                ;Закрыть сегмент стека
CODESG SEGMENT PARA 'Code'                  ;Открыть сегмент кода
BEGIN PROC FAR                              ;Начало процедуры дальнего типа
ASSUME SS:STACKSG, CS:CODESG,  DS:DATASG    ;Назначить сегментные регистры
	PUSH 	DS                               
	SUB 	AX, AX                          
	PUSH 	AX                               
	MOV 	AX, DATASG                       
	MOV 	DS, AX                           
	LEA 	BX, MYTEXT                                                 
MT1:	MOV 	AH, [BX] 
	CMP AH, '$'
	JZ MT3
                        
	CMP 	AH, 53H                         
	JNE 	MT2 
                             
	CMP 	AH, 61H                          
	JNE 	MT2   
MT4:    XOR AH, 100000b  
	MOV [BX], AH                         
                            
MT2:	INC 	BX                               
	JMP MT1

MT3:    MOV 	AH, 09H  
	POP BX                        
	INT 	21H 
	XOR AX, AX
                             
	RET                                    
	BEGIN   ENDP                           

                                 
	CODESG ENDS                             
	END	BEGIN
Результат во вложении, компилятор - TASM
Изображения
Тип файла: jpg 354545645.jpg (40.7 Кб, 67 просмотров)
joe cross вне форума Ответить с цитированием
Старый 01.11.2015, 13:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
MT4: XOR AH, 100000b
MOV [BX], AH
А почему ты решил что этак перевод делается?
Я обычно пишу примерно так:
Код:

mov al,[символ строки]

cmp al,'A'
jl tolittle
cmp al,'Z'
jg tolittle
sub al,'A'
add al,'a'
jmp end
 
tolittle:
cmp al,'a'
jl end
cmp al,'z'
jg end
sub al,'a'
add al,'A'
 
end:
 Выводим символ из al
Ну вернее писал в колледже.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заглавные буквы aj.matter Помощь студентам 3 03.11.2012 16:17
Заглавные в пропесные Misha-QWERTY Visual C++ 2 04.05.2011 05:41
Строчные буквы в заглавные и наоборот Delphi 7 tarakan1983 Помощь студентам 3 20.03.2009 14:15