;子函数:输入双字节整数。值保存在主调函数传递过来的变量中,非数字字符都是结束符。
;入口参数:DS传递主调函数的段地址;DI传递双字节变量的地址
;用到的寄存器:ES,AX,DS,DI,SI,CX,BX,DX
;无符号双字节整型的范围0-65535
data2	SEGMENT
		temp	DB	32 DUP(0)
		addr1	DW	?
		temp2	DW	?
data2	ENDS
code2	SEGMENT
InINT	PROC	FAR	;input int
		ASSUME	CS:code2,DS:data2
		PUSH	AX
		PUSH	BX
		PUSH	CX
		PUSH	DX
		PUSH	DI
		PUSH	SI
		PUSH	DS
		PUSH	ES
		MOV		AX,data2
		MOV		DS,AX
		;
		MOV		[addr1],DI
		LEA		SI,temp
		MOV		CL,0	;记录整数的位数
		MOV		BL,1	;标示当前位是否位首位,目的是去掉前导0,若首位为0,则继续为首位。
again2_1:
		MOV		AH,01H
		INT		21H
		CMP		AL,'0'		;非数字字符均为结束符
		JB		over2_1
		CMP		AL,'9'
		JA		over2_1
		CMP		BL,1		;检测当前位是否位首位,否则继续检测是否位0
		JNE		notFirst
		CMP		AL,'0'
		JE		again2_1
notFirst:
		MOV		BL,0		;将标志更改为“不是首位”
		SUB		AL,30H
		MOV		[SI],AL
		INC		SI
		INC		CL
		JMP		again2_1
over2_1:
		CMP		AL,0DH		;如果是以Enter结束输入,则先输出一个换行符
		JNE		notCR
		MOV		DL,0AH
		MOV		AH,02H
		INT		21H
		;转换成双字节整型
notCR:	DEC		SI
		MOV		WORD PTR ES:[DI],0
		MOV		AX,1
		MOV		[temp2],AX
again2_2:
		MOV		BL,[SI]
		MOV		BH,0
		MUL		BX
		ADD		ES:[DI],AX
		MOV		AX,[temp2]
		MOV		BX,10
		MUL		BX
		MOV		[temp2],AX
		DEC		SI
		DEC		CL
		CMP		CL,0
		JNE		again2_2
		POP		ES
		POP		DS
		POP		SI
		POP		DI
		POP		DX
		POP		CX
		POP		BX
		POP		AX
		RET
InINT	ENDP
code2	ENDS



阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6