Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Замена строчных букв заглавными и наоборот


Автор: mihrimah 30.10.2015, 18:56
Нужно написать программу, которая преобразует заглавные буквы F в строчные f, а строчные t в заглавные T. 
Код работает неправильно (изменяется только заглавные на строчные). В чем ошибка и как ее исправить?

Код

DATASG SEGMENT PARA                         ;Открыть сегмент данных
MYTEXT DB 'FffFttTf fFftTTart' ,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                       
    MOV     CX, 18                           
MT1:    MOV     AH, [BX]                         
    CMP     AH, 46H                         
    JNE  MT2 
    CALL    COR                              
    CMP     AH, 74H                          
    JNE  MT2                              
    CALL    COR2                             
MT2:    INC     BX                               
    LOOP MT1                              
    LEA     DX, MYTEXT                       
    MOV     AH, 09H                          
    INT     21H                              
    RET                                    
    BEGIN   ENDP                           
 
COR PROC     NEAR                       
    NOP                                   
    ADD     AH, 20H                          
    MOV     [BX], AH                          
    RET                                     
    COR ENDP 
 
COR2    PROC     NEAR                       
    NOP                                   
    SUB     AH, 20H                          
    MOV     [BX], AH                          
    RET                                     
    COR2    ENDP 
                                 
    CODESG ENDS                             
    END BEGIN 

Автор: mikeyess 31.10.2015, 10:08
Добрый день.
Во первых: строку MYTEXT DB 'FffFttTf fFftTTart' ,13,10, '$'     ;Объявить переменную MYTEXT
нужно написать с новой строки. Иначе это в комментариях.
И еще много мелких и не очень ошибок и неточностей.
С уважением, Mike

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Zamena-strochnykh-bukv-zaglavnymi-i-naoborot-id56339351ae20151f258b4567#findElement_E7045_563468d2ae2015c00d887141_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)