[匯編語言編程]統計鍵盤輸入。
統計鍵盤輸入。從鍵盤輸入任意一串字符,統計其中數字的個數,并將個數實時的顯示在螢屏上,當輸入的數字個數等于10個時結束輸入。
求大佬指點,提示說要用REP MOVSB .
uj5u.com熱心網友回復:
不要用rep movsbuj5u.com熱心網友回復:
DATA SEGMENTBUF DB 255 ;
DB ?
DB 255 DUP('$')
C DW 0 ;數字
M DB 0DH, 0AH, "DIGITA:$"
DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
;輸入串
LEA DX, BUF
MOV AH,0AH
INT 21H
XOR CX, CX
MOV CL, BUF+1
MOV SI, 0
LOOP1:
MOV AL, BUF[SI+2]
CMP AL, ' '
JZ LOPEND
INC C ;數字
JMP LOP
LOP:
INC SI
LOOP LOOP1
LOPEND:
; 輸出結果
LEA DX, M
MOV AH, 9
INT 21H
MOV AX, C
CALL PRINT
;EXIT TO OS
MOV AH,4CH
INT 21H
PRINT PROC NEAR
MOV BX, 10
XOR CX, CX
Q0:
XOR DX, DX
DIV BX
OR DX, 0E30H
PUSH DX
INC CX
CMP AX, 0
JNZ Q0
Q1:
POP AX
INT 10H
LOOP Q1
RET
PRINT ENDP
CODE ENDS
END START
uj5u.com熱心網友回復:
DATA SEGMENTBUF DB 255 ;
DB ?
DB 255 DUP('$')
C DW 0 ;數字
M DB 0DH, 0AH, "DIGITA:$"
DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
;輸入串
LEA DX, BUF
MOV AH,0AH
INT 21H
XOR CX, CX
MOV CL, BUF+1
MOV SI, 0
LOOP1:
MOV AL, BUF[SI+2]
CMP AL, '#'
JZ LOPEND
CMP AL, 20H
JZ T
CMP AL, '0'
JB T1
CMP AL, '9'
JA T1
INC C ;數字
JMP LOP
T:
JMP LOP
T1:
LOP:
INC SI
LOOP LOOP1
LOPEND:
; 輸出結果
LEA DX, M
MOV AH, 9
INT 21H
MOV AX, C
CALL PRINT
;EXIT TO OS
MOV AH,4CH
INT 21H
PRINT PROC NEAR
MOV BX, 10
XOR CX, CX
Q0:
XOR DX, DX
DIV BX
OR DX, 0E30H
PUSH DX
INC CX
CMP AX, 0
JNZ Q0
Q1:
POP AX
INT 10H
LOOP Q1
RET
PRINT ENDP
CODE ENDS
END START
uj5u.com熱心網友回復:
DATA SEGMENT
BUF DB 255 ;
DB ?
DB 255 DUP('$')
C DW 0 ;數字
M DB 0DH, 0AH, "DIGITA:$"
DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV ES, AX
;輸入串
LEA DX, BUF
MOV AH,0AH
INT 21H
XOR CX, CX
MOV CL, BUF+1
MOV SI, 0
LOOP1:
MOV AL, BUF[SI+2]
CMP AL, '#'
JZ LOPEND
CMP AL, 20H
JZ T
CMP AL, '0'
JB T1
CMP AL, '9'
JA T1
INC C ;數字
JMP LOP
T:
JMP LOP
T1:
LOP:
INC SI
LOOP LOOP1
LOPEND:
; 輸出結果
LEA DX, M
MOV AH, 9
INT 21H
MOV AX, C
CALL PRINT
;EXIT TO OS
MOV AH,4CH
INT 21H
PRINT PROC NEAR
MOV BX, 10
XOR CX, CX
Q0:
XOR DX, DX
DIV BX
OR DX, 0E30H
PUSH DX
INC CX
CMP AX, 0
JNZ Q0
Q1:
POP AX
INT 10H
LOOP Q1
RET
PRINT ENDP
CODE ENDS
END START
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/145819.html
標籤:單片機/工控
