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

📄 05_12.asm

📁 清华大学计算机系汇编语言课程
💻 ASM
字号:
;05_12.asm
;Created by RunningOn Chen.
;2003011434 J34 CS dept, THU
;2005-11-15
;本程序不输出答案,要在debug下才能看出结果


datas segment
	data dw	11,12,13,14,15,00,17,18	;8 numbers
	     dw	21,22,23,00,25,26,27,28
	     dw	31,32,33,34,25,00,27,28
	     dw	41,00,43,44,25,26,27,28
	     dw	51,52,53,54,00,26,27,28
	     dw	61,62,63,64,25,00,27,28
	     dw	71,72,00,74,25,26,27,28
	     dw	00,82,83,00,25,00,27,28
	     dw	91,92,00,94,25,26,27,00
	     dw	01,02,03,04,25,26,00,28
	     dw	71,72,00,74,25,26,27,28
	     dw	00,82,83,00,25,00,27,28
	     dw	01,00,03,04
datas ends

code segment
main	proc far
	assume ds:datas, cs:code
start:
	push	ds
	mov	ax, 0
	push	ax
	mov	ax, datas
	mov	ds, ax
	mov	es, ax			;di与es配合

	mov	di, 0
	mov	si, di
cycle:					;for (si = di = 0 ; si < 200 ; si +=2)
	mov	ax, data[si]		;{
	test	ax, 0ffffh		;	if (data[si] == 0)
	jz	continue		;		continue;
	mov	data[di], ax		;	data[di] = data[si];
	add	di, 2			;	di += 2
continue:				;}
	add	si, 2
	cmp	si, 200
	jl	cycle

	cmp	di, 200
	jge	exit
add_zero:				;注意此时di即有效地址
	mov	cx, di
	sub	cx, 200
	neg	cx			;cx = 200 - di
	shr	cx, 1k
	mov	ax, 0h
	cld
	rep	stosw			;补0

exit:
	ret

main	endp
code	ends
	end start

⌨️ 快捷键说明

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