用键盘输入字符串
ASSUME CS:CC,DS:QQ
QQ SEGMENT DATA DB 100,?,100 DUP(?),'$'
MSG1 DB 'Input the string : ',13,10,'$'
MSG2 DB 13,10,'OUT is : ',13,10,36
N_BIG DW ? QQ ENDS
CC SEGMENT START:
MOV AX,QQ
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
LEA DX,DATA
MOV AH,0AH
INT 21H
LEA DX,MSG2
MOV AH,9
INT 21H
MOV CL,DATA+1
MOV CH,0
CMP CX,0
JNZ CAL
JMP EXIT
CAL:
MOV BX,0
LOP:
MOV DL,DATA[BX + 2]
CMP DL,'0'
JB NEXT1
CMP DL,'9'
JA NEXT1
CALL O_BIN
JMP NEXT
NEXT1:
CMP DL,'A'
JB NEXT2
CMP DL,'Z'
JA NEXT2
INC N_BIG
XOR DL,32
JMP O_CHR NEXT2:
CMP DL,'a'
JB NEXT
CMP DL,'z'
JA NEXT
XOR DL,32 O_CHR:
MOV AH,2
INT 21H
NEXT:
INC BX
LOOP LOP
MOV DL,' '
MOV AH,2
INT 21H
O_NUM:
MOV AX,N_BIG
MOV BL,10
DIV BL
MOV BX,AX
MOV AH,2
CMP BL,0
JZ D_2
MOV DL,BL
ADD DL,'0'
INT 21H
D_2:
MOV DL,BH
ADD DL,'0'
INT 21H
EXIT:
MOV AH,4CH
INT 21H
O_BIN:
PUSH BX
PUSH CX
MOV AH,2
MOV BL,DL
MOV CX,4
O_L:
MOV DL,'0'
TEST BL,8
JZ O_N
INC DL O_N:
INT 21H
SHL BL,1
LOOP O_L
POP CX
POP BX
RET
CC ENDS
END START