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

📄 strcpy1.asm

📁 这是一个关于比较的汇编代码
💻 ASM
字号:
stack	segment	para stack
	dw	100 dup(?)
stack	ends
data	segment	para
buffer	db	"If you attempt to assemble a 16bit executable file, but call the",
     "32bit version of LINK, you will receive a LNKnnnn error message.",
     "The following output example illustrates specifically which error ","messages you may receive:",'$',1024 dup(?)
p1	dw	buffer
p2	dw	buffer
p3	dw	buffer
data	ends
code	segment	para
	assume	cs:code,ds:data,ss:stack
main	proc	far
	mov	ax,data;数据段地址
	mov	ds,ax

	mov	ax,stack;堆栈段地址
	mov	ss,ax
	mov	ax,300
	add	p2,ax
	mov	ax,100
	add	p3,ax
	push	p1
	push	p2
	call	strcpy
	mov	dx,offset p2
	mov	ah,09h
	int	21h
	push	p1
	push	p3
	call	strcpy
	mov	dx,offset p3
	mov	ah,09h
	int	21h
	push	p3
	push	p1
	call	strcpy
	mov	dx,offset p1
	mov	ah,09h
	int	21h
	mov	ax,4c00h
	int	21h
main	endp

strcpy	proc	far
	push	bp;保护bp
	mov	bp,sp
	push	di
	push	si
	mov	si,[bp+8];源数据段
	mov	di,[bp+6];目的数据段
	push	bx;保护bx
	xor	bx,bx;计数包括$在内
	dec	si
	push	ds
	pop	es
l1:	
	inc	si
	inc	bx
	cmp	byte ptr[si],'$'
	jnz	l1
	cmp	si,di
	jnb	abo
	sub	si,bx
	inc	si
	cld
	mov	cx,bx
	rep	movsb
	jmp	re
abo:	add	di,bx
	std
	mov	cx,bx
	rep	movsb
re:	pop	bx
	pop	si
	pop	di
	pop	bp
	ret	4
strcpy	endp
code	ends
	end	main

⌨️ 快捷键说明

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