Introduction to MIPS Assembly Language
This is a course in assembly language programming of the MIPS processor. It emphasizes the topics needed for study of computer architecture: bits, bit patterns, operations on bit patterns, and how bit patterns represent instructions and data. This course is equivalent to a semester-long junior college or university course (except, perhaps, for the emphasis on bit patterns).
The emphasis of the course is on understanding how computers work. This will provide a basis for further study of computer architecture and computer software.
- Win32 Assembler Coding Tutorial
If you have coded in DPMI, you won't have any problems to port your code to Win32. Win32 programs run in the 32bit Protected Mode with a FLAT memory model. That means:
Code, Data and Stack are in the same memory area and start at the same base address (yippieh).
The limit for Code+Data+Stack is 4GB, in theory. At the moment the maximum space is either 2GB (W95/98/ME) or 3GB (some NT/2000), but that's enough, isn't it?
We will NEVER need segment registers any more - they point to the same area in the memory anyway. Always mind this rule: DS is equal to ES, but CS is not equal to DS but a so-called alias (blah, blah, blah).
You can't modify the code using CS but you can do it using DS, ES or SS (okay, that's not that important either).
This web page examines assembly languages in a general manner. Specific examples of addressing modes and instructions from various processors are used to illustrate the general nature of assembly
language. Unlike the other programming languages catalogued here, assembly language is not a single language, but rather a group of languages. Each processor family (and sometimes individual processors within a processor family) has its own assembly
language. In contrast to high level languages, data structures and program structures in assembly language are created by directly implementing them on the underlying hardware.
After of one year that we've released the first Assembler material on-line.
We've received a lot of e-mail where each people talk about different. aspects about this material. We've tried to put these comments and
suggestions in this update assembler material. We hope that this new Assembler material release reach to all people that they interest to learn the most important language for IBM PC.
The document you are looking at, has the primordial function of introducing
you to assembly language programming, and it has been thought for those
people who have never worked with this language
Art of Assembly Language
The Art of Assembly Language Programming (AoA), Randy Hyde's acclaimed text on assembly language programming, is the most-often recommended book on 80x86 assembly language programming in newsgroups, on web sites, and by word of mouth. Why? Well, here are a few reasons:
AoA is comprehensive,
AoA is easy to read and understand,
AoA has had over 10 years refinement,
AoA teaches the fundamentals one must know to be considered an assembly language programmer,
AoA was written by a recognized expert in x86 assembly language programming.
The tutorial has extensive coverage of interfacing assembly and C code and so might be of interest to C programmers who want to learn about how C works under the hood. All the examples use the free NASM (Netwide) assembler. The tutorial only covers programming under 32-bit protected mode and requires a 32-bit protected mode compiler.
I have example code files for: DJGPP, Borland, Microsoft, Open Watcom and Linux C compilers. The examples in the text of the tutorial are for DJGPP only, but how to interface with the other compilers is discussed as well.
First thing you need to know is that Assembly is a great, fast language, but only if you put time and effort in learning it. You must give all or nothing. (I suggest you give all) And remember, the beginning is always borring and hard...so don't give up.Well, I'll start with the basics, like instruction format and some simple instructions to manipulate registers. I don't know how much you know about coding, so I'll explain even the most simple stuff. Please note, that I explain 8086 assembly coding. That means NO 32-bit registers and instructions and NO protected-, real- and virtual 86 mode for now.
If you are looking for information on assembly programming under UNIX-like operating systems (Linux/BSD/BeOS/etc), this is the right place to be. Here you can find various resources, ranging from tutorials and documentation, to actual programs written in assembly language. As time passes, we will try to provide as much information on the subject as possible, so stay tuned.
We will eventually provide information on assembly programming under different platforms: IA32 (x86), IA64 (Itanium), x86-64, SPARC, Alpha, or whatever platform we find
Assembly "Hello World" Tutorial
The following is designed familiarize the reader with programming in x86 (AT&T style, that produced by gcc) assembly under Linux and how to interface assembly and higher-level language code (i.e. C). The tutorial will also briefly cover debugging your assembly using GDB.
This tutorial requires the following:
An i386 family PC running Linux
GCC, the GNU C-compiler
GDB, the GNU debugger command line debugger.