汇编语言设计:边写一程序,将字符串中的大小写字母相互转换(单个字母的转换程序必须写成子程序)。

帮帮我把,不会啊亲
2025-02-23 01:54:13
推荐回答(2个)
回答1:

        CODE  SEGMENT
              ASSUME    CS:CODE
         BUF  DB        '1qaz2w,,,,,sx3eASBX7dc'
         NUM  EQU       $-BUF
 
      START:
              PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES
              MOV       CX,NUM
              LEA       SI,BUF
              CLD
        @M0:
              LODSB
              CALL      BIG2SMALL
              MOV       [SI-1],AL
              LOOP      @M0

              MOV       CX,NUM
              LEA       SI,BUF
              CLD
        @M1:
              LODSB
              MOV       DL,AL
              MOV       AH,2
              INT       21H
              LOOP      @M1
              
              MOV       AH,4CH
              INT       21H
;========================================  
   BIG2SMALL  PROC      NEAR
              CMP       AL,'A'
              JB        @CEXIT
              CMP       AL,'Z'
              JBE       @CONVS
              CMP       AL,'a'
              JB        @CEXIT
              CMP       AL,'z'
              JBE       @CONVB
     @CEXIT:
              RET
     @CONVS:
              ADD       AL,32
              JMP       @CEXIT
     @CONVB:
              SUB       AL,32
              JMP       @CEXIT
   BIG2SMALL  ENDP
;=======================================
   
        CODE  ENDS
              END       START

回答2:

DATA SEGMENT
BUFFER DB 'ABcd123EFG',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX

LEA BX,BUFFER
L: MOV AL,[BX]
CMP AL,0
JE L0
CMP AL,'a'
JB K
CMP AL,'z'
JA L1
SUB AL,20H
JMP L1
K: CMP AL,'A'
JB L1
CMP AL,'Z'
JA L1
ADD AL,20H
CMP AL,'a'
L1: INC BX

MOV DL,AL
MOV AH,2
INT 21H
JMP L
L0: MOV AH,4CH
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START
不知道是不是你要的结果