输入一个字符串并一其二进制形式输出


DATAS SEGMENT
  MES  DB 'Show a string as its hex binary:',0AH,0DH,'$'
  MES1  DB 'Please enter a string or a number:',0AH,0DH,'$'
  MES2  DB  0AH,0DH,'$'
  MES3  DB 'Please choice a kind of operation: r = "restart";other character means = "quit";',0AH,0DH,'$'
  SDD    DB  64H                         ;定义要转化的源数据
         DB  ?
         DB  64H DUP(?)         
  LEN    EQU $-SDD                       ;求字符串实际长度值 
  STRING DB LEN*8 DUP(30H)               ;定义一个中间过渡存储字符串,其长度必须为元数据字节数的8倍
DATAS ENDS
CODE SEGMENT
       ASSUME CS:CODE,DS:DATAS,ES:DATAS
start:
       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 SDD      
       MOV   DS, DX                      ;输入一个字符串放到变量SD中
       MOV   DX, OFFSET SDD    
       MOV   AH, 0AH      
       INT   21H
      
       MOV   DX,OFFSET MES2          ;回车换行
    MOV   AH,09H      
    INT    21H   
         
       SUB    DH,DH                      ;将字符串的实际长度存于DX中
       MOV    DL,SDD+1   
             
       MOV    AL,31H                     ;前期准备工作
      
       SUB    DH,DH                      ;将字符串的实际长度存于DX中
       MOV    DL,SDD+1
       INC    DX
      
       MOV    SI,OFFSET SDD+2
       MOV    DI,OFFSET STRING
       CLD
JMP1:  LODSB
       DEC    DL
       JZ     OUT1
       MOV    CX,8
       MOV    BL,AL
             
again: RCL   BL,1
       JNC   next                       ;如果BL的某一位不为零则对应的[DI]=31H
       MOV   DS:[DI],31H      
next:  INC   DI
       LOOP  again
       JMP   JMP1
      
out1: 
       MOV   DX,OFFSET MES             ;提示信息
    MOV   AH,09H      
    INT    21H
   
       SUB   DH,DH                      ;将源字符串的实际长度存于DX中
       MOV   DL,SDD+1
       MOV   AL,DL                      ;8倍关系
       MOV   BL,08H
       MUL   BL
       MOV   CX,AX                      ;CX值对应下面的 LOOP OUT1
       LEA   SI, STRING
       MOV   BL,0    
OUT2:  MOV   DL,[SI]                    ;显示过渡字符串
       MOV   AH,2
       INT   21H      
       INC   SI
       INC   BL
       CMP   BL,8
       JNZ   MM
       MOV   DL,3BH                     ;显示分隔符;
       MOV   AH,2
       INT   21H
       MOV   BL,0                      
MM:    LOOP  out2
         
       MOV   AX,4C00H
       INT   21H
      
CODE   ENDS
       END start
    

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值