*24 June 2008* This release of NBASM version 00.26.09 is the start of the code to allow 64-bit immediates. Currently any immediate numeral you use will be treated as a 64-bit number, however a 64-bit number will only fit in the DQ declaration. With this in mind, the following will currently not display an error. mov eax,123456789ABCDEFh If you don't need 64-bit immediate values, a download is not neccassary. Also, this new addition will break one item in any previous code if you did the following. mov al,0FFFFFFFFh Even though the above looks like it is an error, the 0FFFFFFFFh is actually a -1 in 32-bit code. A value of -1 does fit in AL (0FFh). However, now that the assembler is moving to 64-bit values, you will need to make the -1 a 64-bit value instead of a 32-bit value. NBASM will give you an error if you have a 32-bit -1 value instead of the new 64-bit -1 value, so no need to worry that NBASM won't catch it now. *26 Dec 2005* VNBASM, the IDE for NBASM, has a lot of problems. It is something I threw together in a weekend and never really put that much effort into it. I am removing it from this page. I do not know if I will work with it some more, or abondon it completely. I have been looking at a few other freeware editors and if I find one that I like and will work with NBASM, I will post a like here. I will not support VNBASM until further notice. *16 Sept 2005* NBDISASM, the NBASM disassembler is now included with the NBASM package. NBDISASM is similar to NDISASM from the NASM package, though I have a few differences. Please see the documentation. If you have used NDISASM, then NBDISASM should be fairly easy to learn how to use. If you have not, it should be easy to learn anyway. This is the first release, so there may be bugs and/or errors. Please let me know if you find some. Thanks. *1 Sept 2005* - NBASM now supports math operands in memory operands. Examples: mov eax,[eax+(1234h+1)] mov eax,[eax+(1234h>>1)] etc. Please see next item about making sure you use the ()'s when needed. - NBASM now supports multiple 32-bit registers in memory operands, including the scale_factor operand. (It is just in the testing phaze, so please let me know if you find something in error) Examples: mov eax,[eax+ebx] mov eax,[eax+ebx*4] cmp dword [eax*4],12345678h mov eax,[esi*4+1234],edx *Please* note the following: if NBASM see's the following line mov eax,[eax+1234h*4] NBASM will take it as mov eax,[eax*4+1234h] where the +1234 is the offset, and *4 is the scale factor. NBASM will *not* take it as mov eax,[eax+(1234h*4)] You have to specifically add the ()'s *23 Aug 2005* It has been a while since I have put much work into NBASM. However, every once in a while, while I am using NBASM, I find an error, bug, or something that just isn't right. Most of the time I fix it, sometimes I don't. If you find a bug, error, or something that you would just like to see fixed or added to NBASM, please let me know. I will do my best to get it fixed/added. Thanks for your support. A fellow user has come across an error in NBASM with memory operands when the symbol's offset is less than 100h from the start of the segment (TINY and SMALL model). (Thanks nayyar). I hope to have it fixed soon. If you are using the standard .COM file format, then this bug does not effect your programs. It does effect .OBJ's and .COM's starting at an offset less than 100h. To temporarily fix this bug in your code, pad the segment with 100h bytes at the first of the segment. I have not yet added the third pass to fix the .jumps part below. I hope to get to this soon. Along with the third pass I will add some code to size optimize the conditional jumps. When using the .jumps directive in the assembler, NBASM does not correctly calculate the addresses of symbols below the jump. This is a known bug, and I hope to have it fixed shortly. While I am fixing this bug, I will make it a three (3) pass assembler. This will help with this item, and I will be able to create a better optimizer. I would like to thank all the people who have sent in a comment about NBASM. If you are using NBASM and haven't commented on it, please send me a comment about it. Whether you like it, dislike it, hate it, love it, etc. This way, I can see how many people are using NBASM and spend more time on finishing it. Thank you. *23 Aug 2005* It has been a while since I have put much work into NBASM. However, every once in a while, while I am using NBASM, I find an error, bug, or something that just isn't right. Most of the time I fix it, some times I don't. If you have find a bug, error, or something that you would just like to see fixed or added to NBASM, please let me know. I will do my best to get it fixed/added. Thanks for your support. *1 Jan 2003* I have now greatly enhanced the EQUates in NBASM. You can now included strings and litterals as EQUates. This also fixes the "phase error between passes" bug due to the EQUates. **Please note that all EQUate definations *must* be before you actually use the equate symbol in your code. i.e.: Define the EQUate before you use it. *19 May 2002* The 32-bit .OBJ version is now released. It will create .OBJ's in the small model allowing 64k of code, 64k of data, and a 64k stack, and using NBL, will create a DOS .EXE file. This is more than twice as much as a .COM file will allow. Please note that I have not added the code to allow multiple .OBJ's or libraries to by linked together. Neither NBASM32 or NBL total allow this yet. I hope to soon change this so that you can link multiple files from other languages, libraries, and utilities. For now, please only use the single .OBJ that NBASM produces, and link it with NBL. (NBL is available for free from the same location you got NBASM, or from http://www.fysnet.net/newbasic.htm Also, this part of NBASM and NBL are in the testing stages. Please remember that they may contain errors, etc. Please report any errors you find to the author. Contact info in the .DOC files. *March 2002* Please note that version 00.25.00 and any further versions now require a DPMI. DPMI is a DOS Protected Mode Interface. If you have Windoze or any other 32-bit protected mode Operating System, and have been running NBASM in a DOS box, then you don't have to change anything about your usage. However, if you have been using NBASM in a TRUE DOS environment. You now must have a 386 or higher processor and use a DPMI. The documentation describes how to do so. It is a single file that once installed, you will not notice a difference in the usage of NBASM. It is a one time install. I have still included the 16-bit version so the new version is called NBASM32. It should work exactly as NBASM, except for two small minor changes to some source code you might have. These two are: 1. If you use/used parenthesis for math functions and the shift operators: mov ax,(256>3) ; shift 256 to the right 3 times mov ax,(2<1) ; shift 2 to the left once You now have to use double GT or LT signs. mov ax,(256>>3) ; shift 256 to the right 3 times mov ax,(2<<1) ; shift 2 to the left once 2. If you have the 'ORG xxh' above your .CODE line, you must now place it below your .CODE line. Please check your existing source code. I am truely sorry for these two minor changes. I thought long and hard about making these two backwards compatible, but item #1 would have been very difficult. Please forgive the changes. One more thing. NBASM32 is out in pre-beta form. It may have some new bugs that NBASM (16-bit) does not have. Please let me know if you find any errors in the the NBASM32. Also, please note that not all of the higher processor instructions are added or working correctly, nor has the PMODE code been checked as much as it probably should. No, make that one more thing. I have breifly checked VNBASM with NBASM32. If you use VNBASM, please keep using NBASM until I have checked for errors. However, if you want to use VNBASM and NBASM32, go right ahead. I just don't recommend it yet. :) Thank you for your support, Ben P.S. I want to thank all of those who have sent me comments about NBASM and/or sent me bug reports. Everyone has been very helpful. Thank you.