随便传一点与ACM无关的汇编语言作业

这篇博客分享了作者近期完成的一些非ACM相关的汇编语言作业,内容涵盖基础指令、数据处理和流程控制等,适合对汇编感兴趣的学习者参考。
摘要由CSDN通过智能技术生成
;**********			Developer : FangFuqiang 						方傅强						
;**********			Class : Computer science and technology 11-01 	计算机科学与技术	
;**********			Student Number : 201150080116						
;**********			Project name :	Calculator(0<n<10) 				十以内的四则运算	
STACK	SEGMENT STACK
	DB 100h dup(0) 
STACK	ENDS
DATA	SEGMENT
	A		DB	?
	B		DB	?
	OP		DB	?
	ANS		DB	?
	TEMP	DB	?
	COUT	DB	'Print two number (n<10)',0DH,0AH
			DB	'For example : 1+2 or 1*2 or 1-2 or 2/1',0DH,0AH,'$'
	COUT1	DB	0AH,'The Answer is :',0AH,'$'
DATA	ENDS
CODE	SEGMENT
	assume	cs:CODE, ds:DATA, ss:STACK	
MAIN PROC FAR  	
	MOV 	AX,DATA
	MOV 	DS,AX	;初始化 DS:DX
	;输出提示字符串
	MOV		DX,OFFSET COUT
	MOV 	AH,09H
	INT 	21H
	;输入3个字符
	MOV		AH,01H
	INT 	21H
	SUB		AL,30H
	MOV 	A,AL
	MOV		AH,01H
	INT 	21H
	MOV		OP,AL
	MOV		AH,01H
	INT 	21H
	SUB		AL,30H
	MOV		B,AL	
	MOV		AH,01H
	INT 	21H
	;输出提示字符
	MOV		DX,OFFSET COUT1
	MOV 	AH,09H
	INT 	21H
	CMP		OP,43
	JE		ADD0
	CMP		OP,45
	JE		SUB0
	CMP		OP,42
	JE		MULP
	CMP 	OP,47
	JE		DIVP
	JMP		MEND
ADD0:
	;求和并比较
	MOV		AL,A	
	ADD		AL,B	;加法的结果储存在AL
	MOV		ANS,AL
	CMP		ANS,10
	JA		ADD2
	CMP		ANS,10
	JNA		ADD1
ADD1:
	;小于10,输出两数之和
	MOV		AL,ANS
	ADD		AL,30H
	MOV		DL,AL	;输出的字符存在DL
	MOV 	AH,02H
	INT 	21H	
	JMP		MEND
ADD2:
	;大于10,输出两数之和
	MOV		DL,31H
	MOV 	AH,02H
	INT 	21H	
	ADD		ANS,38
	MOV		DL,ANS
	MOV 	AH,02H
	INT 	21H	
	JMP		MEND
MULP:
	JMP		MUL0
SUB0:
	;判断是否A>B
	MOV		AL,A
	CMP		AL,B
	JNB		SUB1
	CMP		AL,B
	JB		SUB2
SUB1:
	;A>B
	MOV 	AL,A
	SUB		AL,B
	ADD		AL,30H
	MOV		DL,AL
	MOV 	AH,02H
	INT 	21H
	JMP		MEND
SUB2:
	;A<B
	MOV		DL,45
	MOV 	AH,02H
	INT 	21H	
	MOV 	AL,B
	SUB		AL,A
	ADD		AL,30H
	MOV		DL,AL
	MOV 	AH,02H
	INT 	21H	
	JMP		MEND
DIVP:
	JMP		DIV0
MUL0:
	;乘法,判断位数
	MOV		AL,A
	MUL		B
	MOV		ANS,AL
	CMP		ANS,09H
	JA		MUL1
	CMP		ANS,09H
	JNA		MUL2
MUL1:
	;如果乘积是两位数
	MOV		AL,ANS
	MOV		ANS,0AH
	DIV		ANS
	MOV		B,AH
	ADD		AL,30H
	MOV		DL,AL;输出十位数
	MOV 	AH,02H
	INT 	21H
	MOV		AL,B
	ADD		AL,30H
	MOV		DL,AL;输出个位数
	MOV 	AH,02H
	INT 	21H
	JMP		MEND
MUL2:
	;如果乘积是一位数
	MOV		AL,ANS
	ADD		AL,30H
	MOV		DL,AL
	MOV 	AH,02H
	INT 	21H
	JMP		MEND
DIV0:
	;除法
	XOR		AL,AL
	XOR		AH,AH
	MOV		AL,A
	DIV		B
	MOV		ANS,AL
	ADD		ANS,30H
	MOV		DL,ANS
	MOV 	AH,02H
	INT 	21H
	JMP		MEND
MEND:
	;按任意键退出
	MOV 	AH,4CH
	INT 	21H
MAIN ENDP	
CODE ENDS
	END MAIN



;**********			Developer : FangFuqiang 						方傅强						
;**********			Class : Computer science and technology 11-01 	计算机科学与技术	
;**********			Student Number : 201150080116						
;**********			Project name :	Is it a leap year?  			闰年判断 5位数以内
STACK	SEGMENT	STACK
	DB	100H	DUP(0)
STACK	ENDS
DATA	SEGMENT
	YEAR_BUF	DB	6
	YEAR_LEN	DB	?
	YEAR		DB	100 DUP('$')
	SUM			DW	0	
	COUT		DB	'Input a year: (Example: 1990)',0DH,0AH,'$'
	COUT1		DB	0DH,0AH,'IT IS A LEAP YEAR',0DH,0AH,'$'
	COUT2		DB	0DH,0AH,'IT IS NOT A LEAP YEAR',0DH,0AH,'$'
	ENT			DB	0AH,'$'
DATA	ENDS
CODE	SEGMENT
	ASSUME	CS:CODE,DS:DATA,SS:STACK
MAIN	PROC	FAR
	MOV 	AX,DATA
	MOV 	DS,AX;初始化 DS:DX
	MOV		DX,OFFSET COUT;输出提示字符串
	MOV 	AH,09H
	INT 	21H
	MOV		DX,OFFSET YEAR_BUF;储存输入进缓存
	MOV		AH,0AH
	INT 	21H
	MOV		DX,OFFSET ENT;输出一个换行符
	MOV		AH,09H
	INT 	21H
	MOV		DI,OFFSET YEAR;实际字符串
	MOV		SI,10
	MOV		SUM,0000H
	MOV		CL,YEAR_LEN;字符串个数
	JMP		LOOP_A
LOOP_A:;转换字符串为数字
	XOR		AX,AX
	XOR		BX,BX
	MOV		BL,[DI]
	SUB		BL,30H	
	MOV		AX,SUM
	MUL		SI
	ADD		AX,BX
	MOV		SUM,AX
	MOV		AX,SUM
	INC		DI
	LOOP	LOOP_A	
	;判断是否能被400整除
	XOR		DX,DX
	XOR		AX,AX
	MOV		AX,SUM
	MOV		BX,400
	DIV		BX
	CMP		DX,0000H
	JE		OUT1
	;判断是否能被100整除
	XOR		DX,DX
	XOR		AX,AX
	MOV		AX,SUM
	MOV		BX,100
	DIV		BX
	CMP		DX,0
	JE		OUT2
	;判断是否能被4整除
	XOR		DX,DX
	XOR		AX,AX
	MOV		AX,SUM
	MOV		BX,4
	DIV		BX
	CMP		DX,0
	JE		OUT1
	;不能被4整除
	JMP		OUT2
OUT1:;是闰年
	MOV		DX,OFFSET COUT1;输出提示字符串
	MOV 	AH,09H
	INT 	21H
	JMP		ENDME
OUT2:;不是闰年
	MOV		DX,OFFSET COUT2;输出提示字符串
	MOV 	AH,09H
	INT 	21H
	JMP		ENDME
ENDME:;结束中断
	MOV 	AH,4CH
	INT 	21H
MAIN	ENDP
CODE	ENDS
	END 	MAIN
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值