Yeah, it shuts Nasm up, but doesn't initialize a 128- or 256-bit variable! You're going to have to do something like:
mov [number1], dword 0
mov [number1 + 4], dword 0
mov [number1 + 8], dword 0
mov [number1 + 12], dword 0
("mov dword [number1], 0" is also acceptable)
At this point, you probably want to do:
xor eax, eax ; a convenient zero - of known size
mov [number1], eax
mov [number1 + 4], eax
...
Just one dword will initialize your counters, of course. "resb" has some "cousins"... resw, resd, resq, reso, and resy. There's also "rest" (I like that one) - ten bytes, 80 bits - but that one probably won't help you.
http://www.nasm.us/doc/nasmdoc3.html#section-3.2.2You seem to have the right idea how to use 'em.
Now btc... you'll definitely want square brackets around the memory operand...
btc [constantAdd], 127
That "ought" to work, as I understand the manual (though the immediate would be taken mod 32), but Nasm yells at me about it.
btc [constantAdd], eax
assembles, and is more likely to work on the 127th bit (as I understand it). I kinda doubt if btc is what you want...
There *may* be MMX/XMM/SSEn registers/instructions that will help you with this, but I don't know 'em.
Best,
Frank