对字符串的转移及转化进制操作

 DATAS SEGMENT
   MES  DB 'Show a string as its hex:',0AH,0DH,'$'
   MESS  DB 'Moves string "source" to "target" successfully:',0AH,0DH,'$'
   MES1     DB 'Please enter a string:',0AH,0DH,'$'
   MES2     DB  0AH,0DH,'$'
   MES3     DB 'Please choice a kind of operation: r = "restart";other character means = "quit";',0AH,0DH,'$'
   SD       DB  64H
            DB  ?
            DB  64H DUP(?)
            LEN        EQU $-SD
   SD1      DB  64H
            DB  ?
            DB  64H DUP(?)
            LEN1        EQU $-SD1
DATAS ENDS
CODES SEGMENT
         ASSUME CS:CODES,DS:DATAS
START:
   restart:
         MOV    AX,DATAS
         MOV    DS,AX
      MOV DX,OFFSET MES2  ;回车换行
      MOV AH,09H      
      INT    21H
     
      MOV DX,OFFSET MES1 
      MOV AH,09H       ;显示提示信息输入一个字符串放到变量SD中
      INT    21H
     
         MOV   DX, SEG SD      
         MOV   DS, DX            ;输入一个字符串放到变量SD中
         MOV   DX, OFFSET SD    
         MOV   AH, 0AH      
         INT   21H
        
         MOV    SI,OFFSET SD
         ;SUB    DH,DH           ;将字符串的实际长度存于DX中
         ;MOV    DL,SD+1 
         
      MOV DX,OFFSET MES2  
      MOV AH,09H       ;回车换行
      INT    21H
     
      MOV    DX, SEG SD
      MOV    DS, DX
      MOV    ES, DX           ;利用串传送指令 MOVSB 将字符串从SD传到SD1
      CLD
         MOV    SI,OFFSET SD+2
         MOV    DI,OFFSET SD1+2
         MOV    BX,1
         MOV    CX,LEN
         REP    MOVSB
        
      MOV DX,OFFSET MESS 
      MOV AH,09H       ;显示提示信息字符串传送成功
      INT    21H
    
      MOV DX,OFFSET MES   
      MOV AH,09H       ;显示功能提示信息
      INT    21H
     
      MOV SI,OFFSET SD1+2  ;利用串读取指令LODSB
         ;MOV    CX, LENGTH SD1  ;此时的CX可以没有作用因为DONE结束循环
         MOV     CX,LEN1      ;此时的CX可以没有作用因为DONE结束循环
Again:   CLD         
         LODSB
        
         OR     AL, AL            ;是否为结尾符号 0,是则退出循环        
         JZ     DONE
               
      AND AL,0F0H           ;取 高4位
      MOV    CL,04h   
      SHR AL,CL
      CMP AL,0AH     ;是否是A以上的数
      JB C2  
      ADD AL, 07H 
C2:   ADD AL, 30H  
   MOV DL, AL         ;显示字符的高四位十六进制形式
   MOV AH, 02H
   INT 21H
      CLD
      DEC SI
   LODSB
  
      OR    AL, AL                ;是否为结尾符号 0,是则退出循环        
      JZ    DONE
      
   AND AL, 0FH         ;取低4位
   CMP AL, 0AH
   JB C3  
   ADD   AL, 07H
C3: ADD  AL, 30H
 MOV  DL, AL             ;显示字符低四位的十六进制形式
    MOV  AH, 02H
    INT  21H
    LOOP Again
DONE:
    MOV   AX,DATAS
 MOV   DS,AX
 MOV   DX,OFFSET MES2       ;回车换行
 MOV   AH,09H      
    INT   21H
   
       MOV    AX,DATAS            ;显示提示信息输入选择相应操作
    MOV    DS,AX
    MOV   DX,OFFSET MES3 
    MOV   AH,09H      
    INT    21H
   
    MOV   AH,01H               ;输入字符选择相应功能
       INT   21H          
    CMP    AL,'r'
    jz    restart
    MOV AX,4C00H     ;返回DOS
    INT 21H
         
   CODES ENDS    
         END  START
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值