STA SEGMENT STACK
    DW 40H DUP(?)
    TOP LABEL WORD

STA ENDS

DATA SEGMENT

CRLF DB 0DH,0AH,24H

DATA ENDS
 
CODE SEGMENT
   ASSUME CS:CODE,DS:DATA
   MAIN PROC FAR
   MOV AX,STA
   MOV SS,AX
   LEA SP,TOP
   MOV AX,DATA
   MOV DS,AX

   MOV CX,16
   XOR BX,BX
   L10:MOV AH,1
   INT 21H
   CMP AL,0DH
   JE L9
   CMP AL,30H
   JB L10
   CMP AL,31H           ;输入
   JA L10
   AND AX,1
   SHL BX,1
   ADD BX,AX
   LOOP L10

  L9:
   MOV AH,9
   LEA DX,CRLF
   INT 21H                  ;回车换行

   MOV DL,0
   MOV CX,10H
 
   
  L1:SHL BX,1
     ADC DL,0
     LOOP L1

                         ;DL完成计数
   
   MOV CH,DL
   MOV DL,30H
   MOV CL,2
   ROL CH,CL
   PUSH CX
   AND CH,3            ;00000011
   ADD DL,CH
   CMP DL,30H
   JE L4
   MOV AH,2
   INT 21H             ;解决最高两位输出问题
  
   L4:
   MOV SI,2
   L2:POP CX
   MOV DL,30H
   MOV CL,3
   ROL CH,CL
   PUSH CX
   AND CH,7
   ADD DL,CH
   CMP SI,1
   JE L6
   CMP DL,30H
   JE L5
   L6:MOV AH,2
   INT 21H
   L5:DEC SI
   JNE L2
  

     MOV AH,4CH
     INT 21H
 MAIN ENDP
   CODE ENDS
   END MAIN

posted on 2010-04-15 01:05  KuSiuloong  阅读(184)  评论(0编辑  收藏  举报