Author Options:

Assembly on Windows Answered

A while ago, I started learning assembly with FASM and as much as I tried I couldn't do it, it was impossible...all I found was 9 year old tutorials and stuff that I understood, but still didn't make sense to me, I would really like to learn assembly on windows and I was wondering if anyone could point me in the right direction? EDIT: I have programmed in other languages in the past including C++ and PHP



im not sure if you talking about windows on a house or microsoft windows


10 years ago

Writing a windows application entirely in assembler is likely to be very painful and rather pointless; too many complex data structures and libraries to deal with. Pretty much, the more you have to call library functions or system calls, the less you want to use assembler. So the real question becomes: what do you want to do, that would be a reasonable assembler application?

An interesting question for CogitoErgoSum, but for me, Windows doesn't do much besides play solitaire and surf the net, and there ain't no libraries for the math for my Predictive Music Synthesizer or Volumetric Projector or anything productive whatsoever in the real world... nothing for new invention machines, which are easy to control in DOS with the old fashioned ports and the OUT DX,AL instruction in DEBUG or MASM. I still recall DX was 888 for port LPT1. And DOS commands could be done with INT 21H. And the segments A000 and B000 were the VGA buffer. Unfortunately now the ports are blocked and AVware thinks my legacy stuff is all viruses. But the links I gave show it still can be done somehow.

Ah, but you have essentially a non-window application, where it made sense to use assembler. I just meant that it wasn't reasonable to write a normal application in assembler just to write in assembler. It's also possible to use one of the bootloaders (like GRUB) to load software to run on the raw, bios-initialized hardware. Which is fun, but harder and harder to do as peripherals move to fancy buses (PCI, other things) that mere mortals can't get documentation for...

I agree with Westfw on this. Years ago, I used to program my Apple II entirely in assembly. Even then, I'd write the front-end, if needed in BASIC. Nowadays, the only assembly I ever write is when a particular routine within a C++ program needs to follow specific, narrow and critical timing restraints, is waistful of resources that I need for something else or just can't be done within the few limitations of C++.

Wow, I just looked at the link to pouet.net. Amazing...simply amazing... :O

Well, thanks...i'll have a poke around and see what I can do, if not -i'll stick with C++ ;-)

Im pretty sure you're not planning to develop applications with assembly,coz there are easier / better options.. So my guess, you are learning to crack? Or planning to disAssemble some program?
Even if you're not, browsing through old school cracking tutorials will give you valuable insight on assembly.
Cracking for Newbies has some good assembly tutorials. Be warn that some links there may be broken.


10 years ago

Check this out. Behold 64K of awesome windows assembly power.
It's old like Y2K so you might have seen better.
For the tool it was made with, look here.

Inspires me to want to do it... but...

In my own experience I wrote a speech synthesizer for every 8-bit
computer in the early 1980s in assembly, but it only worked on one PC,
the one I typed it on. This discouraged me from *PC* assembly, and it
doesn't seem to me to be getting easier. Sorry if that story is a buzz kill.
Will ya Mentor me if you write some awesome Windows Assembly code?

BTW, as far as I can tell there is no "product" being sold, it's just that virtual orb with rings around it on their virtual tower of assembly language power, and the only way to (metaphorically) "buy" it is to acquire the skill of programming, (in my interpretation). It's all self-glorified free software.

. Let's see, last time I did any assembly, the 8086 was a new chip, but maybe I can give a few tips. . Unless you just want to learn assembler, forget it. It is a great way to learn more about how a computer works, but you have to keep track of ALL the details. If you actually want to write programs, stick to the higher level languages. Assembler _can_ be handy for optimizing routines that a compiler might not handle well. . All data has to go through the registers - how many and how they act will depend on the chip you're programming for. Learning the registers is a good first step. . Make sure you understand the addressing modes. It really mucks things up when the instruction calls for an direct address and you pass it an indexed one. . Start with a 4-bit or 8-bit processor (eg, 6502, 808x, 68000). I've never tried to program a Pentium with asm, but imagine it's a nightmare. . You may be able to find some info on BASIC/BASICA sites. It was common to insert ML into BASIC for CPU intensive routines (eg, sorting). The asm code may be given.

Ah, thanks...I know most of the basics last time I tried learning it I got up to calls? Like where you would 'call' the DOS prompt...or 'call' ' VGA But that's great, thanks! :)

Heh, I wish...W3 Is mostly based on web languages and asm is much lower level than that. I'd stop and talk but I gotta go out. Thanks though :-)