Нужно реализовать смену регистров букв - Assembler

Узнай цену своей работы

Формулировка задачи:

Ребят, помогите пожалуйста. Нужно вводить строку с клавиатуры, менять регистры местами ( большие буквы на маленькие и наоборот) и выводить уже обработанную строку. Я смог сделать так, что бы маленькие буквы менялись на большие. Большие буквы начинаются с 41, а меленькие с 61. Т.е. если буква маленькая (больше 61 ) я отнимаю 20 и все работает, но как реализовать обратное? 0 1 2 3 4 5 6 7 8 9 A B C D E F 2 ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { | } ~
model tiny 
.code
.startup
 
     mov ax,3 
     int 10h
     
     mov dx,offset testm
     mov ah,09h
     int 21h
     
     mov dx, offset Sos 
     mov ah,0Ah 
     int 21h 
 
     mov cx,[bx + 1] 
  lst:  
     mov di,cx
      cmp Sos[di+1],60h 
      jl next 
      sub Sos[di+1],20h
   next: 
       loop lst
 
      mov ax,3 
      int 10h
      
      mov dx, offset Sos + 2 
      mov ah,9
      int 21h 
      
       mov ah,0
        int 16h
      ret
   Sos db 20 dup("$") 
   testm   db "Input string:$"
      end

Решение задачи: «Нужно реализовать смену регистров букв»

textual
Листинг программы
model tiny 
.code
.startup
 
    mov ax,3 
    int 10h
 
    mov dx,offset testm
    mov ah,09h
    int 21h
 
    mov dx,offset Sos
    mov ah,0Ah
    int 21h 
 
    lea bx,sos
        mov cx,[bx]
    xor ch,ch
    xor di,di
    add di,2
lst:
    cmp Sos[di],'A'
    jb  next
    cmp Sos[di],'z'
    ja  next
    cmp Sos[di],'Z'
    jbe nxt
    cmp Sos[di],'a'
    jb  next
nxt:    xor Sos[di],20h
next:   inc di
    loop    lst
    mov byte ptr Sos[di],'$'
    mov word ptr Sos,0D0Ah
 
    mov dx,offset Sos
    mov ah,9
    int 21h 
 
    mov ah,0
    int 16h
    ret
testm   db  10,13,'Input string:$'
szBuf   equ 30
Sos db  szBuf
szSos   db  ?,szBuf dup("$")
      end

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы