Question: I am on a Mac with Snow Leopard (10.6.3). I hear that the assembly language I work with has to be valid with the chipset that you use. I am completely new to this I have a basic background in C and Objective-C programming and an almost strong background in PHP. I have always wanted to see what assembly is all about. 

The tutorial I'll be looking at is by VTC [[link]](http://www.vtc.com/products/Assembly-Language-Programming-Tutorials.htm).

What I want to know is: are the tutorials that I'm about to do compatible with the assembly version on the Mac that I have?

I am completely new to this language although I do recall studying some of it way, way back in the day. I do have Xcode and what I'm wondering is what kind of document would I open in Xcode to work with assembly and does the Mac have a built in hex editor (when it comes time to needing it)?

Answer: 
A good way to pick up assembly is to get yourself an embedded device to play with.

TI has some [nice, inexpensive devkits](http://focus.ti.com/mcu/docs/mcuprodmsptoolsw.tsp?sectionId=95&tabId=1203&familyId=342&toolTypeId=1) to play with. I've poked around with the Chronos kit ($50) which has digital watch with a programmable MSP430 microcontroller with a wireless link to your computer. It's pretty sweet. 

**Update:** I forgot to mention the [Arduino](http://www.arduino.cc/). It's a pretty nifty open platform with tons of interesting peripherals and projects online.
Assembly, for any processor, will be more or less the same in concept. However, the *complexity* varies between processors. From what I see in your site, you'd be doing x86 assembler, (x86 being the instruction set all consumer-line Intel processors use, which recent Macs and all PCs use) which can turn out to be fairly complex, but not overwhelming if you learn by steps.

XCode works with plain text files, I believe. [Hex Fiend](http://ridiculousfish.com/hexfiend/) for your hex editing needs, if you come across them.

Do keep in mind, Assembly is *extremely low-level*. No ifs, whiles, or in fact any control loop save for "do operation and GOTO if results in (not) zero/equal" (unless your assembler provides them as syntactic sugar, which kind of beats the purpose, in my opinion). PHP knowledge will be at most tangentially useful. You C knowledge should serve you well, though.