2 extern print_hex, print_chr, newline, print_dec, print_str
17 .msg: db "cock", 10, 0
24 mov rbx, -1 ; low bits mask
34 not rcx ; negate remainder mask
35 and r14, rcx ; apply remainder mask
36 mov rcx, -1 ; reset remainder mask
37 shl rcx, 12+9+9+9 ; update remainder mask
39 shr r14, 12+9+9+9-3 ; divide
40 and r14, rbx ; clear lower bits
42 mov rdx, 0x1000 ; offset
43 and rdx, rax ; offset mask
44 add r14, rdx ; add offset
46 not rcx ; negate remainder mask
47 and r13, rcx ; apply remainder mask
48 mov rcx, -1 ; reset remainder mask
49 shl rcx, 12+9+9 ; update remainder mask
51 shr r13, 12+9+9-3 ; divide
52 and r13, rbx ; clear lower bits
54 mov rdx, [r14] ; offset
58 and rdx, rax ; offset mask
59 add r13, rdx ; add offset
62 not rcx ; negate remainder mask
63 and r12, rcx ; apply remainder mask
64 mov rcx, -1 ; reset remainder mask
65 shl rcx, 12+9 ; update remainder mask
67 shr r12, 12+9-3 ; divide
68 and r12, rbx ; clear lower bits
70 mov rdx, [r13] ; offset
74 and rdx, rax ; offset mask
75 add r12, rdx ; add offset
78 not rcx ; negate remainder mask
79 and r11, rcx ; apply remainder mask
81 mov rcx, -1 ; reset remainder mask
82 shl rcx, 12 ; update remainder mask
84 shr r11, 12-3 ; divide
85 and r11, rbx ; clear lower bits
87 mov rdx, [r12] ; offset
91 and rdx, rax ; offset mask
92 add r11, rdx ; add offset
112 mov r8, 0x0500 ; start of extended memory map
113 movzx r9, word[0x1000-10-2] ; number of map entries