projects
/
eightysix
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
foobar
[eightysix]
/
kern
/
src
/
libc
/
string.asm
1
cpu 8086
2
bits 16
3
section .text
4
5
global memset
6
memset:
7
push bp
8
mov bp, sp
9
push di
10
mov di, [bp + 4]
11
mov ax, [bp + 6]
12
mov ah, al
13
mov cx, [bp + 8]
14
test di, 1
15
jz .skip_odd_addr
16
stosb
17
dec cx
18
.skip_odd_addr:
19
test cx, 1
20
jz .skip_odd_cx
21
push bx
22
mov bx, cx
23
mov [bx + di], al
24
inc di
25
pop bx
26
.skip_odd_cx:
27
shr cx, 1 ; count words
28
rep stosw
29
pop di
30
pop bp
31
ret
32
33
global fmemset
34
fmemset:
35
push bp
36
mov bp, sp
37
push di
38
push es
39
mov di, [bp + 4]
40
mov ax, [bp + 6]
41
mov es, ax
42
mov ax, [bp + 8]
43
mov ah, al
44
mov cx, [bp + 10]
45
test di, 1
46
jz .skip_odd_addr
47
stosb
48
dec cx
49
.skip_odd_addr:
50
test cx, 1
51
jz .skip_odd_cx
52
push bx
53
mov bx, cx
54
mov [es:bx + di], al
55
inc di
56
pop bx
57
.skip_odd_cx:
58
shr cx, 1 ; count words
59
rep stosw
60
pop es
61
pop di
62
pop bp
63
ret
64
65
; vi:ts=8 sts=8 sw=8 ft=nasm: