copyset.asm

来自「汇编编程艺术」· 汇编 代码 · 共 63 行

ASM
63
字号
StdGrp		group	stdlib,stddata
stddata		segment	para public 'sldata'
stddata		ends
;
stdlib		segment	para public 'slcode'
		assume	cs:stdgrp
;
;
; CopySet-	Copies one set to another.
;
; inputs:
;
;	ES:DI-  Points at the destination set (at its mask byte).
;	DX:SI-	Points at the mask byte of the source set.
;
;
;
		public	sl_CopySet
;
sl_CopySet	proc	far
		push	ds
		push	es
		push	ax
		push	cx
                push	dx
		push	si
		push	di
		mov	ds, dx
;
		mov	ah, es:[di]		;Get mask bytes
		mov	al, [si]
		mov	dl, ah
		not	dl
		add	si, 8			;Skip to start of set
                add	di, 8
		mov	cx, 256
CpySetLp:	test	al, [si]
		jnz	SetBit
		and	es:[di], dl
		inc	si
		inc	di
		loop	CpySetLp
		jmp	CpySetDone
;
SetBit:		or	es:[di], ah
		inc	si
		inc	di
		loop	CpySetLp
;
CpySetDone:	pop	di
		pop	si
		pop	dx
		pop	cx
		pop	ax
		pop	es
		pop	ds
		ret
sl_CopySet	endp
;
;
stdlib		ends
		end

⌨️ 快捷键说明

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