;-------------------------DEFINE DATA SEGMENT
DATA SEGMENT
STR DB 'please input a character:',0AH,0DH,'
ASCII DB 8 DUP(?),0AH,0DH,'
DATA ENDS
;--------------------------DEFINE STACK SEGMENT
STACK SEGMENT PARA STACK 'STACK'
DB 50 DUP(?)
STACK ENDS
;------------------------DEFINE CODE SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START PROC FAR
BEGIN:
PUSH DS
MOV AX,0
PUSH AX
;-------------------------
MOV AX,DATA
MOV DS,AX
;--------------------------------THERE IS THE CODE THAT IS THE REAL PART.
;----------------First:Display the prompt info
MOV DX,OFFSET STR
MOV AH,09H
INT 21H
;-----------------Display end
;----------------Second:Waitting for input
MOV AH,00H
INT 16H
;----------------After the codes above the line ,one character has been moved to
;----------------the register named AL
;----------------Third: THE CORE CODES
MOV AH,0H;
MOV BX, OFFSET ASCII+7
MOV CX,8H
MOV DL,1
MOV DH,1
AGIAN:
AND DL,AL
CMP DL,0
JNZ PRESENT1
JZ PRESENT0
;----------------
PRESENT0:
MOV BYTE PTR [BX],'0'
JMP NEXT
;----------------
PRESENT1:
MOV BYTE PTR [BX],'1'
JMP NEXT
NEXT :DEC BX
SAL DH,1
MOV DL,DH
LOOP AGIAN
;---------------------------CORE CODES ENDS
;-----------DISPLAY RESULT
MOV DX,OFFSET ASCII
MOV AH,09H
INT 21H
;--------------ENTER ANY KEY TO EXIT
MOV AH,00H
INT 16H
;MOV AH,09H
;INT 21H
;--------------------
RET
START ENDP
CODE ENDS
END BEGIN