汇编程序

从键盘输入一个字符串,先把它原样显示一遍;然后将其中的小写字母转换为大写显示,再将其中的大写字母转换为小写显示,最后将其中的大小写字母互换显示.显示字符串的功能调用采用宏,大写转换,小写转换和大小写互换写成子程序.
要求:
(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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值