diff --git a/readme.md b/readme.md
index e954d61..4f5adf0 100644
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,5 @@
 
-Xbyak 5.51 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
+Xbyak 5.52 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
 =============
 
 Abstract
@@ -333,6 +333,7 @@
 
 History
 -------------
+* 2017/Aug/18 ver 5.52 fix align (thanks to MerryMage)
 * 2017/Aug/17 ver 5.51 add multi-byte nop and align() uses it(thanks to inolen)
 * 2017/Aug/08 ver 5.50 add mpx(thanks to magurosan)
 * 2017/Aug/08 ver 5.45 add sha(thanks to magurosan)
diff --git a/readme.txt b/readme.txt
index 0c72fe7..2bc20f8 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
 
-    C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.51
+    C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.52
 
 -----------------------------------------------------------------------------
 ◎概要
@@ -343,6 +343,7 @@
 -----------------------------------------------------------------------------
 ◎履歴
 
+2017/08/18 ver 5.52 align修正(thanks to MerryMage)
 2017/08/17 ver 5.51 multi-byte nop追加 align()はそれを使用する(thanks to inolen)
 2017/08/08 ver 5.50 mpx追加(thanks to magurosan)
 2017/08/08 ver 5.45 sha追加(thanks to magurosan)
diff --git a/test/Makefile b/test/Makefile
index a13e688..bcd63b6 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -42,6 +42,7 @@
 	./test_address.sh
 	./jmp
 	./bad_address
+	./misc
 ifeq ($(BIT),64)
 	./test_address.sh 64
 	./test_nm.sh 64
diff --git a/test/misc.cpp b/test/misc.cpp
index 5d1ba24..4747f81 100644
--- a/test/misc.cpp
+++ b/test/misc.cpp
@@ -81,3 +81,25 @@
 		}
 	} code;
 }
+
+CYBOZU_TEST_AUTO(align)
+{
+	struct Code : Xbyak::CodeGenerator {
+		Code()
+		{
+			const size_t alignSize = 16;
+			for (int padding = 0; padding < 20; padding++) {
+				for (int i = 0; i < padding; i++) {
+					db(1);
+				}
+				align(alignSize);
+				CYBOZU_TEST_EQUAL(size_t(getCurr()) % alignSize, 0u);
+			}
+			align(alignSize);
+			const uint8 *p = getCurr();
+			// do nothing if aligned
+			align(alignSize);
+			CYBOZU_TEST_EQUAL(p, getCurr());
+		}
+	} c;
+}
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index f056a5e..1f8e96c 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -105,7 +105,7 @@
 
 enum {
 	DEFAULT_MAX_CODE_SIZE = 4096,
-	VERSION = 0x5510 /* 0xABCD = A.BC(D) */
+	VERSION = 0x5520 /* 0xABCD = A.BC(D) */
 };
 
 #ifndef MIE_INTEGER_TYPE_DEFINED
@@ -2391,8 +2391,17 @@
 	#undef jnl
 #endif
 
-	void nop(size_t size = 1)
+	/*
+		use single byte nop if useMultiByteNop = false
+	*/
+	void nop(size_t size = 1, bool useMultiByteNop = true)
 	{
+		if (!useMultiByteNop) {
+			for (size_t i = 0; i < size; i++) {
+				db(0x90);
+			}
+			return;
+		}
 		/*
 			Intel Architectures Software Developer's Manual Volume 2
 			recommended multi-byte sequence of NOP instruction
@@ -2431,12 +2440,9 @@
 		if (x == 1) return;
 		if (x < 1 || (x & (x - 1))) throw Error(ERR_BAD_ALIGN);
 		if (isAutoGrow() && x > inner::ALIGN_PAGE_SIZE) fprintf(stderr, "warning:autoGrow mode does not support %d align\n", (int)x);
-		if (useMultiByteNop) {
-			nop(size_t(getCurr()) % x);
-			return;
-		}
-		while (size_t(getCurr()) % x > 0) {
-			nop();
+		size_t remain = size_t(getCurr()) % x;
+		if (remain) {
+			nop(x - remain, useMultiByteNop);
 		}
 	}
 #endif
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 72f7c78..4dbadb6 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "5.51"; }
+const char *getVersionString() const { return "5.52"; }
 void adc(const Operand& op, uint32 imm) { opRM_I(op, imm, 0x10, 2); }
 void adc(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x10); }
 void adcx(const Reg32e& reg, const Operand& op) { opGen(reg, op, 0xF6, 0x66, isREG32_REG32orMEM, NONE, 0x38); }
