From Bulbapedia, the community-driven Pokémon encyclopedia.
Each item has a number used to identify it in any game. The following list enumerates them according to the way they are stored in any Generation I Game Boy game.
The names of items are stored in the ROM of the English Red and Blue games from the address 0x472B to 0x4A62 (0x433F to 0x45B4 in the Japanese games). The format is a simple list of variable-length strings (each byte of the string corresponding to a character, per the game's character encoding), with different strings separated by the byte 0x50.
Invalid items (adjacent names)
Directly following the item names—from address 0x4A63 in English, 0x45B5 in Japanese—are a list of floor names which are stored in the same format as the item names, meaning that they can be forced to appear as items; however they do not have valid effects and can freeze the game when used. These names are used by lifts and are retrieved from the same ROM location, meaning there is nothing in the games to suggest that these were ever intended as real items.
In the Japanese games, a series of unused strings also follows the list of floor names, from address 0x45F5 to 0x4671. The exact same data follows the floor names in the English games, from address 0x4A92 to 0x4B0E. Since this data follows the Japanese encoding, the strings are nonsense within English games. Like the list of floor names, they do not have valid effects when forced as items.
The last text string, "excellent" (Japanese: エクセレント) is curiously not terminated by 0x50. It is included in the internal name of the hex:74 item glitch item according to the buffer at CD68 (an address to store the names of strings and copy them elsewhere) after the buffer is updated when the name of the item is selected, however, the lack of a 0x50 terminating character is responsible for obscuring the name of the item and making "エクセレント" invisible. In addition, the lack of a 0x50 character in the glitch item causes the game to simply freeze when it is selected (before it can be used), when a 0x50 cannot be found past the CD68 buffer.
Other item names may also be seen if another index before 196 (the first HM) is used, manifesting as glitch items. Some of these may have invalid names, while others may appear with names such as the name of the player's rival.