通过调用子程序来把字符串一十六进制的形式输出

 DATAS SEGMENT
MES     DB  'Please enter the Source but the size of it should less 100',0AH,0DH,'$'
MES2 DB  0AH,0DH,'$'
Source   DB  64H
         DB  ?
         DB  64H DUP(?)
DATAS ENDS
CODES SEGMENT
  ASSUME CS:CODES,DS:DATAS
START:    
   restart:
         MOV    AX,DATAS       
      MOV    DS,AX
      
      MOV DX,OFFSET MES  ;提示信息输入源数据
      MOV AH,09H      
      INT    21H
     
      MOV   DX, SEG Source      
         MOV   DS, DX
         MOV   DX, OFFSET Source     ;输入一个字符串放到变量SD中
         MOV   AH, 0AH      
         INT   21H
        
         MOV DX,OFFSET MES2      ;回车换行
      MOV AH,09H      
      INT    21H        
     
         SUB    CH,CH                ;将字符串的实际长度存于DX中
         MOV    CL,Source+1
        
         MOV SI,OFFSET Source+2  
         CALL   SHOWSTRING
          
        MOV  AX,4C00H      ;返回DOS
     INT  21H                       
   
   
SHOWSTRING  PROC
         
Again:   PUSH  CX
         PUSH  SI           
         CLD         
         LODSB
        
      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
   ;POP   CX
   POP   SI
   LODSB
  
   AND AL, 0FH        ;取低4位
   CMP AL, 0AH
   JB C3  
   ADD   AL, 07H
C3: ADD  AL, 30H
 MOV  DL, AL            ;显示字符低四位的十六进制形式
    MOV  AH, 02H
    INT  21H
    POP    CX
    LOOP Again
    RET
SHOWSTRING ENDP
   CODES ENDS    
         END  START

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值