#80386 machine code + DOS, <del>75</del> 69 bytes ***NOTE: This is a reply to [@anatolyg's really clever 2015 answer][1], with a few tweaks to reduce score by -6 bytes. I'm only submitting this as a separate non-competing answer because it wouldn't be possible to explain fully in a comment.*** **Changes:** - Use `SI` to reset the `BX` pointer to `100H`, since DOS sets `SI` initially to `100H` ([ref][2]). Use that to reset `BX` instead of an `imm`. **(-1 byte)** - Instead of using a 3/5 counter in `DX`, use `AAM` for modulo operations on counter. IMHO, `AAM` is a really underrated instruction since it's effectively a byte-length `DIV` using only 2 bytes that can accept an `imm` value as the divisor. @Peter Cordes touches on this in his very brilliant post about [FizzBuzz in assembly][3]. **(-5 bytes)** **Unassembled:** Per [@Peter Cordes's request][4], instruction opcodes included in listing: 0D 0A 24 db 13, 10, '$' ; a CF/LF (but really it's 'OR AX,240A') B1 64 mov cl, 100 ; loop counter set to 100 33 C0 xor ax, ax ; clear AX (+2 bytes to undo 'OR AX,240A') main_loop: 8B DE mov bx, si ; init bx to 100h 40 inc ax ; increment fizz counter 50 push ax ; save fizz counter 50 push ax ; save ax from getting clobbered by AAM D4 05 aam 5 ; AL = AL mod 5, ZF if AL = 0 58 pop ax ; restore ax 75 0A jnz short buzz_done 83 EB 04 sub bx, 4 ; offset for output string 66C707 7A7A7542 mov dword ptr [bx], 'zzuB' buzz_done: 50 push ax D4 03 aam 3 ; AL = AL mod 3, ZF if AL = 0 58 pop ax 75 0A jnz short fizz_done 83 EB 04 sub bx, 4 66C707 7A7A6946 mov dword ptr [bx], 'zziF' fizz_done: 84 FF test bh, bh 74 0C jz short num_done decimal_loop: D4 0A aam; ; AL = AL mod 10 04 30 add al, '0' ; convert to ASCII 4B dec bx 88 07 mov [bx], al C1 E8 08 shr ax, 8 ; 'mov al, ah' that sets ZF - nice! 75 F4 jnz decimal_loop num_done: 8B D3 mov dx, bx ; set dx to output string pointer B4 09 mov ah, 9 CD 21 int 21h 58 pop ax ; restore fizz counter E2 C3 loop main_loop C3 ret **`xxd` binary:** 00000000: 0d0a 24b1 6433 c08b de40 5050 d405 5875 [email protected] 00000010: 0a83 eb04 66c7 0742 757a 7a50 d403 5875 ....f..BuzzP..Xu 00000020: 0a83 eb04 66c7 0746 697a 7a84 ff74 0cd4 ....f..Fizz..t.. 00000030: 0a04 304b 8807 c1e8 0875 f48b d3b4 09cd ..0K.....u...... 00000040: 2158 e2c3 c3 !X... [1]: https://codegolf.stackexchange.com/questions/58615/1-2-fizz-4-buzz/58779#58779 [2]: https://codegolf.stackexchange.com/questions/132981/tips-for-golfing-in-x86-x64-machine-code/181407#181407 [3]: https://stackoverflow.com/questions/28334034/fizzbuzz-in-assembly-segmentation-fault/37494090#37494090 [4]: https://codegolf.stackexchange.com/questions/58615/1-2-fizz-4-buzz?page=1&tab=votes#comment198509_58779