For a requirement like this, it's probably best to have two "domain" tables. In one, you have two fields: StateName and Abbreviation. You'll then create a value list based on the two fields. You'll use Abbreviation as the first field, but sort and display only the second field, StateName. When a user selects "Mississippi", the system will automatically choose "MS" (because that's the actual value of the list) and insert it into the field.
Your second table will be similar, but larger. What you'll do there is have, again, two fields: ZipCode and City. In this case, though, instead of a value list, you'll define a lookup based on a relationship between the ZipCode table and the table where the address is being entered, with ZipCode = ZipCode. Choose to Lookup the value of City from the ZipCode table and insert it into the address.
Let me know if you need further detail. HTH
Thank you very much