字符串转为十六进制的形式并以十六进制形式输出

DATAS SEGMENT
MES  DB 'Show a string as its hex:',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     ;求字符串实际长度值
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  ;显示提示信息输入一个字符串放到变量SD中
      MOV AH,09H      
      INT    21H
     
         MOV   DX, SEG SD      
         MOV   DS, DX
         MOV   DX, OFFSET SD     ;输入一个字符串放到变量SD中
         MOV   AH, 0AH      
         INT   21H
        
      MOV DX,OFFSET MES2  ;回车换行
      MOV AH,09H      
      INT    21H
     
      MOV DX,OFFSET MES  ;显示功能提示信息
      MOV AH,09H      
      INT    21H
     
      MOV SI,OFFSET SD+2     ;利用串读取指令LODSB
         MOV    CX, LENGTH SD 
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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值