1 00:00:00,820 --> 00:00:10,000 The Netwide assembler Nasm is an 80 x 86 assembler designed for portability and modularity. 2 00:00:10,030 --> 00:00:19,540 It supports a range of object file formats, including Linux and NetBSD FreeBSD a dot out elf coff Microsoft 3 00:00:19,540 --> 00:00:24,310 16 bit object file and win 32 and others. 4 00:00:24,340 --> 00:00:30,650 It will also output plain binary files, so its syntax is designed to be simple and easy to understand. 5 00:00:30,670 --> 00:00:34,240 So similar to Intel's but less complex. 6 00:00:34,240 --> 00:00:44,290 So it supports Pentium P6, MKs 3D now SE and SSI two Opcodes plus it has a macro capability, which 7 00:00:44,290 --> 00:00:44,860 is good. 8 00:00:45,010 --> 00:00:47,440 You will use that next lectures. 9 00:00:47,650 --> 00:00:53,920 And let's ask a question to ourselves why yet another assembler? 10 00:00:53,950 --> 00:01:04,300 The Netwide assembler grew out of an idea on pump lanc, ESM x86 or possibly altalink that ESM, which 11 00:01:04,300 --> 00:01:12,820 was essentially that there didn't seem to be a good 386 series assembler around and that maybe someone 12 00:01:12,820 --> 00:01:14,410 ought to write one. 13 00:01:14,410 --> 00:01:16,360 So I wrote the. 14 00:01:17,260 --> 00:01:20,300 I compared this assemblers 1 to 3. 15 00:01:20,320 --> 00:01:21,460 These five assemblers. 16 00:01:21,460 --> 00:01:25,390 Actually, the six is an assembly between each other. 17 00:01:25,420 --> 00:01:29,810 So let's start from the a86. 18 00:01:29,830 --> 00:01:33,810 So A86 is good, but not free. 19 00:01:33,820 --> 00:01:40,300 And in particular, you don't get any 32 bit capability until you pay and it is thus only two. 20 00:01:40,450 --> 00:01:43,060 We have also gas here. 21 00:01:43,150 --> 00: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 22 00:01:51,370 --> 00:01:55,240 to GCC which always feeds it correct code. 23 00:01:55,240 --> 00:01:57,980 So it's error checking is minimal. 24 00:01:58,000 --> 00:02:05,140 Also, its syntax is horrible from the point of view of anyone trying to actually write anything in 25 00:02:05,140 --> 00:02:05,260 it. 26 00:02:05,260 --> 00:02:07,840 Plus you can't write 16 bit code in it. 27 00:02:08,110 --> 00:02:11,020 You can actually, but you can't write it properly. 28 00:02:11,020 --> 00: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 29 00:02:20,780 --> 00:02:23,270 much or any documentation. 30 00:02:23,870 --> 00:02:24,340 Um. 31 00:02:24,390 --> 00:02:28,550 Masm is not very good and it's expensive. 32 00:02:28,550 --> 00:02:34,400 Like all the Microsoft uh, things here and it runs only under Dos here. 33 00:02:35,000 --> 00:02:43,610 Um, and we also have TSM, which is better, better than MSM, but still strives for MSM compatibility, 34 00:02:43,640 --> 00:02:49,520 which means millions of directives and tons of red tape. 35 00:02:49,520 --> 00:02:57,050 And its syntax is essentially a msmes with the contradictions and quirks that entails, although it 36 00:02:57,050 --> 00:03:00,830 sorts out some of those by means of idle mode. 37 00:03:00,830 --> 00:03:02,990 And it's expensive too. 38 00:03:02,990 --> 00:03:04,580 And it's only. 39 00:03:05,230 --> 00:03:06,100 Those only here.