test1.asm

来自「编译原理课设」· 汇编 代码 · 共 183 行

ASM
183
字号
;*******************************************************
Stack_seg	segment
	dw	1024 dup(?)
	tos	label	word
Stack_seg	ends
;*******************************************************
Data_seg	segment
Data_seg	ends
;*******************************************************
Code_seg	segment
	assume	CS:Code_seg, DS:Data_seg, SS:Stack_seg
	WRITE	proc	far
	PUSH	AX
	PUSH	BX
	PUSH	CX
	PUSH	DX
	PUSH	BP
	MOV	BP , SP
	MOV	BX , [BP + 14]
	MOV	CX , 10000
	CMP	BX , CX
	JL	w_label1
	CALL	WRITE_SUB
w_label1:
	MOV	CX , 1000
	CMP	BX , CX
	JL	w_label2
	CALL	WRITE_SUB
w_label2:
	MOV	CX , 100
	CMP	BX , CX
	JL	w_label3
	CALL	WRITE_SUB
w_label3:
	MOV	CX , 10
	CMP	BX , CX
	JL	w_label4
	CALL	WRITE_SUB
w_label4:
	MOV	CX , 1
	CALL	WRITE_SUB
	MOV	SP , BP
	POP	BP
	POP	DX
	POP	CX
	POP	BX
	POP	AX
	RET
	WRITE	endp

	WRITE_SUB	proc	near
	MOV	AX , BX
	MOV	DX , 0
	DIV	CX
	MOV	BX , DX
	MOV	DL , AL
	ADD	DL , '0'
	MOV	AH , 02h
	INT	21h
	RET
	WRITE_SUB	endp

	main	proc	far
start:
	MOV	AX , Stack_seg
	MOV	SS , AX
	MOV	SP , offset tos

	PUSH	DS
	SUB	AX , AX
	PUSH	AX

	MOV	AX , Data_seg
	MOV	DS , AX
	PUSH	AX
	PUSH	BX
	PUSH	CX
	PUSH	DX
	PUSH	BP
	MOV	BP , SP
	PUSH	BP
	ADD	BP , -2
	MOV	AX , SS:[BP]
	POP	BP
	PUSH	AX
	MOV	AX , 0
	PUSH	AX
	POP	BX
	POP	AX
	CMP	AX , BX
	JG	Label0
	MOV	AX , 0
	PUSH	AX
	JMP	Label1
Label0:	MOV	AX , 1
	PUSH	AX
Label1:	POP	AX
	CMP	AX , 0
	JE	L1
	MOV	AX , BP
	ADD	AX , -2
	PUSH	AX
	PUSH	BP
	ADD	BP , -2
	MOV	AX , SS:[BP]
	POP	BP
	PUSH	AX
	PUSH	BP
	ADD	BP , -4
	MOV	AX , SS:[BP]
	POP	BP
	PUSH	AX
	POP	BX
	POP	AX
	ADD	AX , BX
	PUSH	AX
	POP	BX
	POP	AX
	PUSH	BP
	MOV	BP , AX
	MOV	SS:[BP] , BX
	POP	BP
	PUSH	BX
	POP	AX
	JMP	L2
L1 :
	MOV	AX , BP
	ADD	AX , -4
	PUSH	AX
	PUSH	BP
	ADD	BP , -4
	MOV	AX , SS:[BP]
	POP	BP
	PUSH	AX
	PUSH	BP
	ADD	BP , -2
	MOV	AX , SS:[BP]
	POP	BP
	PUSH	AX
	POP	BX
	POP	AX
	ADD	AX , BX
	PUSH	AX
	POP	BX
	POP	AX
	PUSH	BP
	MOV	BP , AX
	MOV	SS:[BP] , BX
	POP	BP
	PUSH	BX
	POP	AX
L2 :
	MOV	AX , 0
	PUSH	AX
	POP	AX
	PUSH	BP
	ADD	BP , 18
	MOV	SS:[BP] , AX
	POP	BP
	MOV	SP , BP
	POP	BP
	POP	DX
	POP	CX
	POP	BX
	POP	AX
	RET
	POP	AX
	PUSH	BP
	ADD	BP , 18
	MOV	SS:[BP] , AX
	POP	BP
	MOV	SP , BP
	POP	BP
	POP	DX
	POP	CX
	POP	BX
	POP	AX
	RET
	main	endp
Code_seg	ends
	end	start
;*******************************************************

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?