⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05_19.asm

📁 清华大学计算机系汇编语言课程
💻 ASM
字号:
;05_19.asm
;Created by RunningOn Chen.
;2003011434 J34 CS dept, THU
;2005-11-15
;
;不允许用C作标识符,所以换成了D
;本程序不输出答案,要在debug下才能看出结果


data	segment
	A	dw 80, 79, 69, 98, 87, 89, 94, 65, 74, 83, 82, 79, 85, 81, 20
	B	dw 80, 19, 29, 98, 28, 89, 94, 36, 44, 12, 18, 59, 45, 81, 84, 174, 169, 475, 476, 484
	D	dw 20 dup(?)
	A_NUM	equ 15
	B_NUM	equ 20
data	ends

stack	segment	stack
	db 100 dup(?)
stack	ends

code	segment
main	proc far
	assume ds:data, cs:code
start:
	push	ds
	mov	ax, 0
	push	ax
	mov	ax, data
	mov	ds, ax

	mov	di, 0
	mov	si, 0			;
cycle:					;for (di = si = 0 ; si < A_NUM * 2 ; si+=2)
	mov	ax, A[si]		;{
	call	is_exist		;	ax = A[si];
	jnz	continue		;	if (is_exist(al))
	mov	D[di], ax		;	{
	add	di, 2			;		C[di] = ax;
continue:				;		di += 2;
	add	si, 2			;	}
	cmp	si, A_NUM * 2		;}
	jl	cycle			;
	
exit:
	ret
main	endp

is_exist proc	near			;input: ax=(A) output: NZ-nonexist Z-exist
	push	si			;save si
	push	bx

	mov	si, 0			;
next:					;for (si = 0 ; si < B_NUM * 2 ; si++)
	mov	bx, B[si]		;{
	cmp	bx, ax			;	bx = B[si];
	jz	return			;	if (ax == bx)
	add	si, 2			;		return 0;
	cmp	si, B_NUM * 2		;}
	jl	next			;return 1;

	mov	bx, 0			;nonexist. make NZ
	add	bx, 1
return:
	pop	bx
	pop	si
	ret
is_exist endp

code	ends

	end start

⌨️ 快捷键说明

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