WEBVTT

00:00.820 --> 00:10.000
The Netwide assembler Nasm is an 80 x 86 assembler designed for portability and modularity.

00:10.030 --> 00:19.540
It supports a range of object file formats, including Linux and NetBSD FreeBSD a dot out elf coff Microsoft

00:19.540 --> 00:24.310
16 bit object file and win 32 and others.

00:24.340 --> 00:30.650
It will also output plain binary files, so its syntax is designed to be simple and easy to understand.

00:30.670 --> 00:34.240
So similar to Intel's but less complex.

00:34.240 --> 00:44.290
So it supports Pentium P6, MKs 3D now SE and SSI two Opcodes plus it has a macro capability, which

00:44.290 --> 00:44.860
is good.

00:45.010 --> 00:47.440
You will use that next lectures.

00:47.650 --> 00:53.920
And let's ask a question to ourselves why yet another assembler?

00:53.950 --> 01:04.300
The Netwide assembler grew out of an idea on pump lanc, ESM x86 or possibly altalink that ESM, which

01:04.300 --> 01:12.820
was essentially that there didn't seem to be a good 386 series assembler around and that maybe someone

01:12.820 --> 01:14.410
ought to write one.

01:14.410 --> 01:16.360
So I wrote the.

01:17.260 --> 01:20.300
I compared this assemblers 1 to 3.

01:20.320 --> 01:21.460
These five assemblers.

01:21.460 --> 01:25.390
Actually, the six is an assembly between each other.

01:25.420 --> 01:29.810
So let's start from the a86.

01:29.830 --> 01:33.810
So A86 is good, but not free.

01:33.820 --> 01:40.300
And in particular, you don't get any 32 bit capability until you pay and it is thus only two.

01:40.450 --> 01:43.060
We have also gas here.

01:43.150 --> 01:51.370
Gas is free and ports over Dos and Unix, but it's not very good since it's designed to be back end

01:51.370 --> 01:55.240
to GCC which always feeds it correct code.

01:55.240 --> 01:57.980
So it's error checking is minimal.

01:58.000 --> 02:05.140
Also, its syntax is horrible from the point of view of anyone trying to actually write anything in

02:05.140 --> 02:05.260
it.

02:05.260 --> 02:07.840
Plus you can't write 16 bit code in it.

02:08.110 --> 02:11.020
You can actually, but you can't write it properly.

02:11.020 --> 02:20.780
And we also have s 86 as 86 is a Linux and Linux specific and my version at least doesn't seem to have

02:20.780 --> 02:23.270
much or any documentation.

02:23.860 --> 02:24.300
Um.

02:24.390 --> 02:28.550
Masm is not very good and it's expensive.

02:28.550 --> 02:34.400
Like all the Microsoft uh, things here and it runs only under Dos here.

02:35.000 --> 02:43.610
Um, and we also have TSM, which is better, better than MSM, but still strives for MSM compatibility,

02:43.640 --> 02:49.520
which means millions of directives and tons of red tape.

02:49.520 --> 02:57.050
And its syntax is essentially a msmes with the contradictions and quirks that entails, although it

02:57.050 --> 03:00.830
sorts out some of those by means of idle mode.

03:00.830 --> 03:02.990
And it's expensive too.

03:02.990 --> 03:04.580
And it's only.

03:05.230 --> 03:06.100
Those only here.
