39 lines
2.2 KiB
Plaintext
39 lines
2.2 KiB
Plaintext
1 .module wc_strset
|
|
2 .area _CODE
|
|
3 .globl _wc_strset
|
|
00000000 4 _wc_strset::
|
|
00000000 DD E5 [15] 5 push ix
|
|
00000002 DD 21 00 00 [14] 6 ld ix, #0
|
|
00000006 DD 39 [15] 7 add ix, sp
|
|
8
|
|
00000008 DD 7E 04 [19] 9 ld a, 4(ix) ; c (из-за push ix)
|
|
0000000B DD E1 [14] 10 pop ix
|
|
11
|
|
12 ; записываем первый байт
|
|
0000000D 77 [ 7] 13 ld (hl), a
|
|
14
|
|
0000000E 42 [ 4] 15 ld b, d
|
|
0000000F 4B [ 4] 16 ld c, e
|
|
17
|
|
18 ; len == 1 → всё
|
|
00000010 0B [ 6] 19 dec bc
|
|
00000011 78 [ 4] 20 ld a, b
|
|
00000012 B1 [ 4] 21 or c
|
|
00000013 28 05 [12] 22 jr z, _wc_strset_done
|
|
23
|
|
24 ; DE = HL + 1
|
|
00000015 E5 [11] 25 push hl
|
|
00000016 D1 [10] 26 pop de
|
|
00000017 13 [ 6] 27 inc de
|
|
28
|
|
29 ; BC = len - 1 уже
|
|
30
|
|
00000018 ED B0 [21] 31 ldir
|
|
32
|
|
0000001A 33 _wc_strset_done:
|
|
34 ; очистка стека
|
|
0000001A C1 [10] 35 pop bc
|
|
0000001B 33 [ 6] 36 inc sp
|
|
0000001C C5 [11] 37 push bc
|
|
0000001D C9 [10] 38 ret
|