[汇编语言编程]统计键盘输入。 统计键盘输入。从键盘输入任意一串字符,统计其中数字的个数,并将个数实时的显示在屏幕上,当输入的数字个数等于10个时结束输入。

oPeter_WANG 2019-03-28 04:11:17
[汇编语言编程]统计键盘输入。
统计键盘输入。从键盘输入任意一串字符,统计其中数字的个数,并将个数实时的显示在屏幕上,当输入的数字个数等于10个时结束输入。
求大佬指点,提示说要用REP MOVSB .
...全文
1326 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
江大桥wy 2019-03-28
  • 打赏
  • 举报
回复

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
江大桥wy 2019-03-28
  • 打赏
  • 举报
回复
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
江大桥wy 2019-03-28
  • 打赏
  • 举报
回复
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 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
oPeter_WANG 2019-03-28
  • 打赏
  • 举报
回复
不要用rep movsb

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧