Thread: Assembly Code Refence

  1. #1
    Registered User
    Join Date
    Aug 2006
    Posts
    62

    Assembly Code Refence

    Hi, I'm hoping that this is the proper forum, considering that I only know of ASM being used on windows...Anyway, I was wondering if there was a place where I could get an overview of ASM Commands, like a list...Sorta like

    Jmp = Jump
    Jne = Jump if not equal
    Je = Jump if equal
    Jg = Jump if greater than
    Jge = Jump if greater than or equal to
    Nop = No operation

    etc, etc, etc...The jumps and nop are all that I understand...I've done a few google searches but have only come up with massive books, so I was wondering if anyone knew of any lists...

    Thanks in advance,
    Mike

  2. #2
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318
    They're hard to find, but I found some:
    http://www.woodmann.com/crackz/Tutorials/Drme2.htm
    http://solaris.license.virginia.edu:...86/@Ab2TocView

    Assembly instructions are processor-specific, that's why there is no "one big reference".
    "The Internet treats censorship as damage and routes around it." - John Gilmore

  3. #3
    Registered User
    Join Date
    Aug 2006
    Posts
    62
    Sweet, thanks! The first one is like exactly what I was looking for

    Assembly instructions are processor-specific, that's why there is no "one big reference".
    *Sigh* I figured that...
    I've often heard it said that learning assembly is a good way to make your program run more efficiently, is this true? Is it possible to learn assembly, considering that it's all processor specific? I'm almost certain this is a dumb question, but when you say "processor" you mean Windows versus Linux, not Pentium III versus Pentium IV right?

  4. #4
    Registered /usr
    Join Date
    Aug 2001
    Location
    Newport, South Wales, UK
    Posts
    1,273
    No, we do mean Pentium III versus Pentium IV. (Windows and Linux are Operating Systems, not processors!)

    So, what you want is a reference for Intel x86 assembly language.

    Plus I think you'll find that a modern C/C++ compiler will do everything that your attempts at assembly optimization can do and more.

  5. #5
    Registered User
    Join Date
    Aug 2006
    Posts
    62
    No, we do mean Pentium III versus Pentium IV.
    Ah, okay thanks for that info...I didn't know that
    (Windows and Linux are Operating Systems, not processors!)
    I know that, but I thought that they used different kinds of processors...
    So, what you want is a reference for Intel x86 assembly language.
    Right, I've started to figure that out...So what other main processors are there? Does it vary with operating systems? Is that why I can't open certain files with W32dasm?
    Plus I think you'll find that a modern C/C++ compiler will do everything that your attempts at assembly optimization can do and more.
    Yeah, I know that, but I want to know assembly code for disassembling a program, versus assembling one...

  6. #6
    Cat without Hat CornedBee's Avatar
    Join Date
    Apr 2003
    Posts
    8,895
    Quote Originally Posted by mkylman
    I know that, but I thought that they used different kinds of processors...
    That would require Linux users to buy completely new computers, wouldn't it?

    Actually, they kind of use different processors. Windows runs on x86, x86-64 (Athlon64 and Intel CPUs with EM64-T) and IA-64 (Intel Itanium). NT 4 also existed in an Alpha version.
    Linux runs on all these, and many, many more.

    Right, I've started to figure that out...So what other main processors are there? Does it vary with operating systems? Is that why I can't open certain files with W32dasm?
    The big CPUs in the desktop and server market are the x86 architecture, the x86-64, the IA-64, the PowerPC 32 and 64 (Macs before the change to Intel CPUs, as well as various IBM servers), and I believe the SPARC architecture.
    In embedded systems, the most common CPUs use the ARM instruction set.

    But the W32dasm issue is a different one, probably. Although probably all that stuff uses x86 instructions, the other issue is how these instructions are packed into files. A Win32 portable executable, an a.out executable, an ELF executable, Win32 dynamic libraries, ELF shared objects, MS .lib static libraries, GNU .a archives, MS .obj compiled objects, and GNU .o compiled objects all contain object code, but the stuff surrounding can be quite different.

    Yeah, I know that, but I want to know assembly code for disassembling a program, versus assembling one...
    You won't really learn anything from that.

    At least, nothing we on this board endorse.
    All the buzzt!
    CornedBee

    "There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code."
    - Flon's Law

  7. #7
    Registered User
    Join Date
    Aug 2006
    Posts
    62
    But the W32dasm issue is a different one, probably. Although probably all that stuff uses x86 instructions, the other issue is how these instructions are packed into files. A Win32 portable executable, an a.out executable, an ELF executable, Win32 dynamic libraries, ELF shared objects, MS .lib static libraries, GNU .a archives, MS .obj compiled objects, and GNU .o compiled objects all contain object code, but the stuff surrounding can be quite different.
    So you're saying that the file extension matters right? Well I'm not too sure how that really matters because the file is an exe, a Win32 portable executable, if I think it means what it means...Firefox.exe would be a win32 portable executable right? Anyway...

    At least, nothing we on this board endorse.
    I never asked you to help me do anything illegal (or that I was doing anything illegal), I just wanted to know if anyone knew of any asm references I could use so that I could decypher what the hell Win32dasm is outputting

  8. #8
    Madly in anger with you
    Join Date
    Nov 2005
    Posts
    211
    I believe this may be what you are looking for:

    http://www.megaupload.com/?d=B7ZUADW0

    note to mods: it is not a direct download link, nor is it warez, it is included in the masm32 package which is freeware.

    Intel Core 2 Quad Q6600 @ 2.40 GHz
    3072 MB PC2-5300 DDR2
    2 x 320 GB SATA (640 GB)
    NVIDIA GeForce 8400GS 256 MB PCI-E

  9. #9
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318
    I couldn't find the "download" button.
    "The Internet treats censorship as damage and routes around it." - John Gilmore

  10. #10
    Registered User
    Join Date
    Aug 2006
    Posts
    62
    I believe this may be what you are looking for:
    Thanks man! I just downloaded it and looked at it...It looks like it's exactly what I was looking for, so now I've got 2 good references...that and the first link that maxorator gave me: http://www.woodmann.com/crackz/Tutorials

    I couldn't find the "download" button
    I found it...It's next to the MegaUpload logo...It says please write x letters, then next to it there's a text box, write the letters in the text box...Next to the text box there is a download button...

  11. #11
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318
    This should be one of the best references:
    http://en.wikibooks.org/wiki/X86_Ass...6_Instructions
    "The Internet treats censorship as damage and routes around it." - John Gilmore

  12. #12
    Registered User Frobozz's Avatar
    Join Date
    Dec 2002
    Posts
    546
    The Art of Assembly website is also good to check especially since it covers 32-bit Windows and Linux.

  13. #13
    Registered User
    Join Date
    Aug 2006
    Posts
    62
    This should be one of the best references:
    http://en.wikibooks.org/wiki/X86_Ass...6_Instructions
    Ah wikipedia, perhaps one of the best references of all...

    The Art of Assembly website is also good to check especially since it covers 32-bit Windows and Linux.
    Dude, I just now checked that site out. Amazing, tons of information in the Windows section. Thanks man!

    One final question, are there any X-86 Assembly Language "compilers", or is it an language interpreted like python?

    Thanks,
    Mike

  14. #14
    Registered User Frobozz's Avatar
    Join Date
    Dec 2002
    Posts
    546
    Eh what you need is actually called an assembler. There are a good number out there. Which one you choose generally depends on how much you like the style and the features it has. I personally liked the Netwide Assembler, its available for multiple x86 platforms. Another popular one is the Flat Assembler but I've never tried using it.

  15. #15
    Registered User
    Join Date
    Aug 2006
    Posts
    62
    Ah, an assembler...I was close though right? No I guess not...Well anyway, netwide assembler? Thanks man, I'll check that one out, along with the other one, Flat Assembler...

    Okay, I just checked the site for Netwide Assembler...Umm, which one do I want? Win32 Binaries or DOS 32-bit Binaries? I'm assuming that it's Win32 Binaries, but it doesn't really hurt to ask does it? I just downloaded Flat Assembler and the Win32 version for Netwide Assembler, so I'll check them out and see which one I like the most.

    Regards,
    Mike

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Replies: 2
    Last Post: 06-02-2008, 10:00 PM
  2. Obfuscated Code Contest: The Results
    By Stack Overflow in forum Contests Board
    Replies: 29
    Last Post: 02-18-2005, 05:39 PM
  3. << !! Posting Code? Read this First !! >>
    By kermi3 in forum Linux Programming
    Replies: 0
    Last Post: 10-14-2002, 01:30 PM
  4. The relationship between C++ and assembly and machine code
    By TotalBeginner in forum C++ Programming
    Replies: 5
    Last Post: 04-22-2002, 02:46 PM