📄 copy32.s
字号:
.text
.align 2,0x90
.globl _read32
_read32:
movl 2*4(%esp), %edx
movw 1*4(%esp), %ax
movw %ax, %fs
movl %fs:(%edx), %eax
ret
.align 2,0x90
.globl _store32
_store32:
movw 1*4(%esp), %ax
movw %ax, %fs
movl 2*4(%esp),%edx
movl 3*4(%esp),%eax
movl %eax, %fs:(%edx)
ret
.align 2,0x90
.globl _put_user_byte
_put_user_byte:
movw 1*4(%esp), %ax
movw %ax, %fs
movl 2*4(%esp),%edx
movb 3*4(%esp),%al
movb %al, %fs:(%edx)
ret
.align 2,0x90
.globl _bzero32
_bzero32:
pushl %ebp
movl %esp,%ebp
pushl %es
pushl %edi
movw 8(%ebp), %ax / seg
movl 12(%ebp), %edi / off
movl 16(%ebp), %ecx / bytes
movw %ax, %es
xorl %eax, %eax
shrl $2, %ecx
rep
stosl
movl 16(%ebp), %ecx / bytes
andl $3, %ecx
rep
stosb
popl %edi
popl %es
leave
ret
.align 2,0x90
.globl _cpy16_32
_cpy16_32:
pushl %ebp
movl %esp,%ebp
pushl %edi
pushl %esi
pushl %es
movw 8(%ebp),%ax / dest es:user
movw %ax, %es
movl 12(%ebp),%edi / dest edi:user
movl 16(%ebp),%esi / src ds:esi
movl 20(%ebp),%ecx
cld
testb $1,%cl
je 1f
movsb
1: testb $2,%cl
je 2f
movsw
2: shrl $2,%ecx
rep ; movsl
popl %es
popl %esi
popl %edi
leave
ret
.align 2,0x90
.globl _cpy32_16
_cpy32_16:
pushl %ebp
movl %esp,%ebp
pushl %edi
pushl %esi
pushl %ds
movw 8(%ebp),%ax / src ds:user
movw %ax, %ds
movl 12(%ebp),%esi / src esi:user
movl 16(%ebp),%edi / dest es:edi
movl 20(%ebp),%ecx / bytes
cld
testb $1,%cl
je 1f
movsb
1: testb $2,%cl
je 2f
movsw
2: shrl $2,%ecx
rep ; movsl
popl %ds
popl %esi
popl %edi
leave
ret
.align 2,0x90
.globl _strcpy16_32
_strcpy16_32:
pushl %ebp
movl %esp,%ebp
pushl %edi
pushl %esi
pushl %es
movw 8(%ebp),%ax / dest es:user
movw %ax, %es
movl 12(%ebp),%edi / dest edi:user
movl 16(%ebp),%esi / src ds:esi
1: lodsb
stosb
orb %al, %al
jnz 1b
popl %es
popl %esi
popl %edi
leave
ret
.align 2,0x90
.globl _strcpy32_16
_strcpy32_16:
pushl %ebp
movl %esp,%ebp
pushl %edi
pushl %esi
pushl %ds
movw 8(%ebp),%ax / src ds:user
movw %ax, %ds
movl 12(%ebp),%esi / src esi:user
movl 16(%ebp),%edi / dest es:edi
1: lodsb
stosb
orb %al, %al
jnz 1b
popl %ds
popl %esi
popl %edi
leave
ret
.align 2,0x90
.globl _cpy32_32
_cpy32_32:
pushl %ebp
movl %esp,%ebp
pushl %edi
pushl %esi
pushl %ds
pushl %es
movw 8(%ebp),%ax
movw %ax, %ds
movl 12(%ebp),%esi
movw 16(%ebp), %ax
movw %ax, %es
movl 20(%ebp),%edi
movl 24(%ebp),%ecx
cld
testb $1,%cl
je 1f
movsb
1: testb $2,%cl
je 2f
movsw
2: shrl $2,%ecx
rep ; movsl
popl %es
popl %ds
popl %esi
popl %edi
leave
ret
.align 2,0x90
.globl _getstr32_16
_getstr32_16:
pushl %ebp
movl %esp,%ebp
pushl %edi
pushl %esi
pushl %ds
movw 8(%ebp),%ax / src ds:user
movw %ax, %ds
movl 12(%ebp),%esi / src esi:user
movl 16(%ebp),%edi / dest es:edi
movb 20(%ebp),%cl / char
1: lodsb
stosb
xorb %al, %cl
jnz 1b
popl %ds
popl %esi
popl %edi
leave
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -