Author Topic: Newbie  (Read 526 times)

Eugen1344

  • Regular Member
  • *
  • Posts: 2
Newbie
« on: June 26, 2017, 05:53:39 AM »
I saw a rule about a post i should make to ensure you that i am a legit person. So hi, i am not a bot. In fact, I am a beginner in assembly programming. I have some knowledge in c#, c languages. But I started digging into assembler a year ago. I want to have some knowledge in it, to be able to do interesting stuff that low level programming has to offer.

I know that this is a very trite topic  :icon_redface:, but will try anyway: can you please recommend me some books, reference manuals, tutorials, maybe with links? I am interested in win32, 64 assembler, assembler in general and debugging/disassembling windows programs. I want to read advanced, complex stuff. Thanks!

jj2007

  • Member
  • *****
  • Posts: 7756
  • Assembler is fun ;-)
    • MasmBasic
Re: Newbie
« Reply #1 on: June 26, 2017, 07:27:49 AM »
Hi Eugen,
Check the recommended reading section. And welcome to the forum :icon14:

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 4934
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: Newbie
« Reply #2 on: June 26, 2017, 10:48:06 AM »
Top right corner, MASM32 download and you will need access to the Intel manuals and MSDN. If you own a copy of an older SDK that has the help file you will have most of the Windows reference material and if you can still find it, the old win32.hlp file is still useful for core API reference.
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :biggrin:

RuiLoureiro

  • Member
  • ****
  • Posts: 671
Re: Newbie
« Reply #3 on: June 28, 2017, 04:25:06 AM »
Hi
Welcome to the forum
 :icon14:

felipe

  • Member
  • ***
  • Posts: 376
  • assemble the unassembled.
Re: Newbie
« Reply #4 on: June 30, 2017, 10:02:47 AM »
Welcome newbie. :t

Wow! i had a very busy week but here i am again  :biggrin:
Felipe.

Eugen1344

  • Regular Member
  • *
  • Posts: 2
Re: Newbie
« Reply #5 on: July 03, 2017, 08:54:02 PM »
Thanks. But which of the books will you personally recommend? Which of them are most complete? Because there are actually alot, i can't really choose where to start  :icon_eek:

mineiro

  • Member
  • ***
  • Posts: 365
Re: Newbie
« Reply #6 on: July 04, 2017, 02:22:10 AM »
Hello Eugen1344;
You initially need the manuals of the target processor you want to program on a low level.
The manual contains the description of the features that certain processors offer, the instructions, how to encode or decode the instructions, ....
Currently most desktop computers have intel or amd processors, you should check which processor is on your machine.
http://developer.amd.com/resources/developer-guides-manuals/
https://software.intel.com/en-us/articles/intel-sdm
Keep in mind that the above address may change over time and in this way become obsolete.
Another fact is about the processor, if we were talking about smartphones then the manuals would be others because they use other processors (example arm), other instructions if compared to desktop computers.

Next step is to choose an assembler and together read your manual to understand about the facilities it offers, syntax rules, ....
Most assemblers generate an object file, but others can create the final executable. The object file can be grouped with others to form a function library.
In some cases a linker is required to generate the final resulting file, either function library or executable.
We use a debugger to analyze how our final program behaves at runtime in order to find and remove possible errors or logic failures in our program.
Another useful tool is a disassembler, which converts a given file into a list of instructions to be parsed later.
I also cite a hexadecimal editor to see certain files in raw form, to try to recognize paternities in files, to see how the final file structure is arranged.

Let's create programs to work on a certain Operating System. We should then have the help file from a developer's point of view about what O.S. offers.
What are the functions that have, the rules to be followed for our program to be compatible with certain O.S. ..
Repair a detail, on the same computer I can have installed O.S. ms-dos, windows, linux, .... The help file is specific to O.S., as well as some of its tools.
I mean, the rules of executable files made for 32-bit windows may be different from those made for windows 64-bit.
An example is a debugger made for 32-bit windows, it can not in theory debug a file made for windows 64 bits, it can not even debug a file made for ms-dos or linux, even though it uses the same processor.
Still on, we need to supposedly convert files made available by O.S. developers to be understood by the assembler used. Most of the available files are made using the C language, hence we need to convert the header (.h) files of this language to .inc files that are understood by the specific assembler.
Likewise, we need in some cases to create or have .lib libraries in order to help certain tools generate the final file in the assembly process.

We will need a text editor (IDE) to write our source code. Some offer the ability to build User Interfaces graphically.
Sometimes source code examples are needed to better assimilate the overall context.
After setting up the environment, we are able to program our hello world.

Most books use technical terms, a different jargon than usual, if you feel difficulties look for secondary sources and use the manuals to get a better concept about the description. I recommend all the books you can read and so draw your own conclusions.

I did not mention several links not to influence your personal choice on which IDE, assembler, debugger, ... to be used. I've tested everything I've found.


About advanced topics:
An interesting subject is about code optimization. http://www.agner.org/optimize/
I would try to develop all the tools I needed while learning.
Even more advanced would be to build our own processor. A good introductory book is "Digital Computer Electronics" by "Albert Paul Malvino and Jerald A. Brown" (McGraw-Hill). Nowadays there are several options and technologies available, other users can comment on the subject.

Eugen1344, I have a lot of patience in being able to guide people as I have been helped in the past. If you still have questions, feel free to post them and if it is within my level of knowledge I will help you.
I'd rather be this ambulant metamorphosis than to have that old opinion about everything

hutch--

  • Administrator
  • Member
  • ******
  • Posts: 4934
  • Mnemonic Driven API Grinder
    • The MASM32 SDK
Re: Newbie
« Reply #7 on: July 05, 2017, 10:58:37 PM »
Our friend have been afforded the opportunity to post links in other locations that may be more friendly to his interests than here.  :P
hutch at movsd dot com
http://www.masm32.com    :biggrin:  :biggrin:

aw27

  • Member
  • ****
  • Posts: 855
  • Let's Make ASM Great Again!
Re: Newbie
« Reply #8 on: July 06, 2017, 01:34:38 AM »
Quote
I want to read advanced, complex stuff
Congratulations!!
Quote
i can't really choose where to start
Start here then: Intel® 64 and IA-32 Architectures Software Developer’s Manual