汇编程序

从键盘输入一个字符串,先把它原样显示一遍;然后将其中的小写字母转换为大写显示,再将其中的大写字母转换为小写显示,最后将其中的大小写字母互换显示.显示字符串的功能调用采用宏,大写转换,小写转换和大小写互换写成子程序.
要求:
(1). 编写一个完整的源程序完成题目的要求.
(2). 把子程序单独写在一个文件中,用源程序包含的方法完成题目要求.
(3). 把子程序单独汇编,用目标文件链接的方法完成题目要求.
(4). 把子程序加入到一个子程序库中,用子程序库调入的方法完成题目要求.
PUBLIC  UPPERTOLOWER
        DATA  SEGMENT   COMMON
    SOURESTR  DB        
20
              DB        
0
              DB        
20  DUP ( ' $ ' )
        
; STR1  DB        ' $ '
    UPPERSTR  DB        
20  DUP ( ' $ ' )
    LOWERSTR  DB        
20  DUP ( ' $ ' )
   CHANGESTR  DB        
20  DUP ( ' $ ' )
        DATA  ENDS
        CODE  SEGMENT
            UPPERTOLOWER  PROC      FAR
              ASSUME    CS
:CODE , DS :DATA
              MOV       AX
, DATA
              MOV       DS
, AX
              PUSH      AX
              PUSH      CX
              PUSH      SI
              PUSH      BX
              MOV       SI
, OFFSET SOURESTR  + 2
              MOV       BX
, OFFSET LOWERSTR
              MOV       CX
, 20
      NEXT1:  MOV       AL
, [SI]
              CMP       AL
, 'A'
              JB        RESTR2
              CMP       AL
, 'Z'
              JA        RESTR2
              OR        AL
,  00100000B
              MOV       [BX]
, AL
              JMP       EXIT1
     RESTR2:
              MOV       [BX]
, AL
      EXIT1:
              INC       SI
              INC       BX
              LOOP      NEXT1
              POP       BX
              POP       SI
              POP       CX
              POP       AX
              RET
            UPPERTOLOWER  ENDP
        CODE  ENDS
              
END
小写字母转换为大写:
      PUBLIC  LOWERTOUPPER
        DATA  SEGMENT   COMMON
    SOURESTR  DB        
20
              DB        
0
              DB        
20  DUP ( ' $ ' )
      
;   STR1  DB        ' $ '
    UPPERSTR  DB        
20  DUP ( ' $ ' )
    LOWERSTR  DB        
20  DUP ( ' $ ' )
   CHANGESTR  DB        
20  DUP ( ' $ ' )
        DATA  ENDS
        CODE  SEGMENT
            LOWERTOUPPER  PROC      FAR
              ASSUME    CS
:CODE , DS :DATA
              MOV       AX
, DATA
              MOV       DS
, AX
              PUSH      AX
              PUSH      CX
              PUSH      SI
              PUSH      BX
              MOV       SI
, OFFSET SOURESTR + 2
              MOV       BX
, OFFSET UPPERSTR
              MOV       CX
, 20
      NEXT2:  MOV       AL
, [SI]
              CMP       AL
, 'a'
              JB        RESTR1
              CMP       AL
, 'z'
              JA        RESTR1
              AND       AL
,  11011111B
              MOV       [BX]
, AL
              JMP       EXIT2
     RESTR1:
              MOV       [BX]
, AL
      EXIT2:
              INC       SI
              INC       BX
              LOOP      NEXT2
              POP       BX
              POP       SI
              POP       CX
              POP       AX
              RET
            LOWERTOUPPER  ENDP
        CODE  ENDS
              
END
小写转换和大小写互换:
      PUBLIC  CHANGE
        DATA  SEGMENT   COMMON
    SOURESTR  DB        
20
              DB        
0
              DB        
20  DUP ( ' $ ' )
      
;   STR1  DB        ' $ '
    UPPERSTR  DB        
20  DUP ( ' $ ' )
    LOWERSTR  DB        
20  DUP ( ' $ ' )
   CHANGESTR  DB        
20  DUP ( ' $ ' )
        DATA  ENDS
        CODE  SEGMENT
      CHANGE  PROC      FAR
              ASSUME    CS
:CODE , DS :DATA
              MOV       AX
, DATA
              MOV       DS
, AX
              PUSH      AX
              PUSH      CX
              PUSH      SI
              PUSH      BX
              MOV       SI
, OFFSET SOURESTR + 2
              MOV       BX
, OFFSET CHANGESTR
              MOV       CX
, 20
      NEXT3:  MOV       AL
, [SI]
              CMP       AL 
, 'A'
              JB        RESTR
              CMP       AL
, 'Z'
              JB        LOWER2
              CMP       AL
, 'a'
              JB        RESTR
              CMP       AL
, 'z'
              JA        RESTR
              AND       AL
,  11011111B
              MOV       [BX]
, AL
              JMP       EXIT3
     LOWER2:
              OR        AL
,  00100000B
              MOV       [BX] 
, AL
              JMP       EXIT3
      RESTR:
              MOV       [BX]
, AL
      EXIT3:
              INC       SI
              INC       BX
              LOOP      NEXT3
              POP       BX
              POP       SI
              POP       CX
              POP       AX
              RET
      CHANGE  ENDP
        CODE  ENDS
              
END
主程序:
       EXTRN  CHANGE
:FAR
       EXTRN  UPPERTOLOWER
:FAR
       EXTRN  LOWERTOUPPER
:FAR
     DISPMSG  MACRO     MESSAGE     
; 显示message字符串
              MOV       DX
, OFFSET MESSAGE
              MOV       AH
, 9
              INT       21H
              MOV       DL
, 0AH
              MOV       AH
, 02H
              INT       21H
              MOV       DL
, 0DH
              MOV       AH
, 02H
              INT       21H
              ENDM
        DATA  SEGMENT   COMMON
    SOURESTR  DB        
20
              DB        
0
              DB        
20  DUP ( ' $ ' )
       
;  STR1  DB        ' $ '
    UPPERSTR  DB        
20  DUP ( ' $ ' )
    LOWERSTR  DB        
20  DUP ( ' $ ' )
   CHANGESTR  DB        
20  DUP ( ' $ ' )
        STR1  DB        'LOWER TO UPPER LETTER:
$ '
        STR2  DB        'UPPER TO LOWER LETTER:
$ '
        STR3  DB        'CHANGE THE LOWER AND THE UPPER LETTER:
$ '
        DATA  ENDS
        CODE  SEGMENT
        MAIN  PROC      FAR
              ASSUME    CS
:CODE , DS :DATA
      
START :
              MOV       AX
, DATA
              MOV       DS
, AX
              MOV       DX
, OFFSET SOURESTR
              MOV       AH
, 0AH
              INT       21H
              MOV       DL
, 0AH
              MOV       AH
, 02H
              INT       21H
              MOV       DL
, 0DH
              MOV       AH
, 02H
              INT       21H
              
; LEA       DX , SOURESTR + 2
              
; MOV       AH , 09H
             
;  INT       21H
              DISPMSG   SOURESTR
+ 2
              
CALL       FAR PTR  UPPERTOLOWER
              DISPMSG   STR2
              DISPMSG   LOWERSTR
              
CALL       FAR PTR LOWERTOUPPER
              DISPMSG   STR1
              DISPMSG   UPPERSTR
              
CALL       FAR PTR CHANGE
             
;  MOV       DX , OFFSET CHANGESTR
              
; MOV       AH , 09H
              
; INT       21H
              DISPMSG   STR3
              DISPMSG   CHANGESTR
              MOV       AX
, 4C00H
              INT       21H
        MAIN  ENDP
        CODE  ENDS
              
END         START

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值