当前位置:编程学习 > 汇编语言 >>

用汇编语言编写程序:从键盘输入一串(不超过51个)以逗号分隔符的不带符号的十进制数(1~4位),在显示器

用汇编语言编写程序:从键盘输入一串(不超过51个)以逗号分隔符的不带符号的十进制数(1~4位),在显示器显示输入个数和最大值。 例如:输入:23,105,8888,1234 输出:COUNT=4 MAX=8888 拜托 谢谢啦!!
答案:;80x86汇编程序设计,已测试
.386
RW		MACRO	A,B
		LEA		DX,	  A
		MOV		AH,	  B
		INT		21H
		ENDM
DATA        SEGMENT       USE16
BUF1        DB	200
			DB	?
			DB	200 DUP(?)
BUF2		DW  50 DUP(?)
MAX			DW	?
COUNT		DW	?
STR1		DB	'Please input numbers:',0DH,0AH,'$'
STR2        DB  'COUNT=$'
STR3		DB	'MAX=$'
STR4		DB  0DH,0AH,'$'
DATA        ENDS
STACK      SEGMENT       USE16      STACK
			DB         200 DUP(0)
STACK      ENDS
CODE        SEGMENT       USE16
               ASSUME        CS:CODE, DS:DATA, SS:STACK
START:
            MOV     AX,   DATA
		    MOV     DS,   AX
			RW		STR1, 9
			RW		BUF1, 10
			RW		STR4, 9
			CALL	ZF_SZ
			CALL	MAXNUM
			SHR		DI,	  1
			MOV		COUNT,DI
			RW		STR2, 9
			MOV     AX,    COUNT
			CALL    SHUCHU
			MOV     DL,   ' '
			MOV     AH,   2
            INT     21H
			RW		STR3,	9
			MOV     AX,    MAX
			CALL    SHUCHU
			MOV     AH,     4CH
            INT     21H
			
ZF_SZ		PROC
			XOR		AX,   AX
			XOR		CX,	  CX
			XOR		DX,   DX
			XOR		DI,	  DI
			MOV		SI,   2
			MOV		CL,	  BUF1[1]
			MOV		BX,	  10
LOOP1:		CMP		BUF1[SI],','
			JE		JMP1
			MUL		BX
			PUSH	BX
			MOV		BL,	  BUF1[SI]
			SUB		BL,	  30H
			ADD		AX,	  BX
			POP		BX
			INC		SI
			LOOP	LOOP1	
			JMP		JMP5
JMP1:		MOV		BUF2[DI],AX
			XOR		AX,   AX
			ADD		DI,   2
			INC		SI
			LOOP	LOOP1
JMP5:		MOV		BUF2[DI],AX
			ADD		DI,   2
			RET
ZF_SZ		ENDP

MAXNUM		PROC
			PUSHA
			MOV		CX,	  DI
			XOR     BX,   BX
			MOV     AX,  BUF2[BX]
ML:         CMP     AX,  BUF2[BX]
		    JGE     MJ  
		    XCHG    BUF2[BX], AX
MJ:    		ADD		BX,	  2
		    DEC     CX
		    LOOP    ML
			MOV		MAX,	AX
			POPA
			RET
MAXNUM		ENDP

SHUCHU      PROC                 ;数值数据到串的转换并输出
            PUSH     BX
			PUSH	CX
            MOV      BX,      10 ;确定需要转换的进制
			XOR      CX,      CX
			XOR      DX,      DX
SC1:        INC      CX
            DIV      BX
		    PUSH     DX
		    XOR      DX,    DX
		    CMP      AX,    0
		    JNE      SC1
SC2:        POP      DX
			CMP		 DX,	10
			JL		 J1
			ADD		 DX,	7
J1:    		ADD      DL,    30H
		    MOV      AH,    2
		    INT      21H
		    LOOP     SC2
			POP		CX
			POP      BX
			RET
SHUCHU      ENDP
CODE        ENDS
            END     START
其他:额..我还想叫你帮我呢

上一个:汇编语言的loop指令
下一个:帮我检查个200行的简单汇编程序哪语意错了,解决100分

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,