Во-первых - ворнинг этот ни ухом ни рылом не связан с количеством макроаргументов - AVRASM(2) добивает нулем все одинокие db в cseg, и правильно делает - это в лоб описано в мануале:
If the DB directive is given in a Code Segment and the expressionlist contains more than one expression, the expressions are packed so that two bytes are placed in each program memory word. If the expressionlist contains an odd number of expressions, the last expression will be placed in a program memory word of its own, even if the next line in the assemby code contains a DB directive. The unused half of the program word is set to zero. A warning is given, in order to notify the user that an extra zero byte is added to the .DB statement
Во-вторых, располагать строки прямо в макросе - моветон и напрасная трата времени (одна лишняя инструкция - rjmp PrnStr). Располагай все строки после конца исполняемого кода, а если лень самому нули в конец строки ставить - сделай макрос dbz:
.macro dbz
.db @0,0
.endm
dbz "asdfghj"
А длину макроаргументов вычислять в AVRASM нечем, да и незачем