NGASM 8086/8088 Assembler v1.3 from Simtel NGASM 8086/8088 Assembler v1.4 Beta 2 - includes a litttle refurbished Programmer's Manual 1. PUSHA, POPA instructions added. You cannot see these Instructions when you debug using DEBUG.EXE. ROUTINE1 PROC . . . ROUTINE1 ENDP ROUTINE2 PROC . . . ROUTINE2 ENDP PROC ROUTINE3 . . . ENDP are now possible. Binary Numbers can be specified in Data Declaration and in Code. Children can play with Binary Numbers. Like testing the AND, OR, and XOR Instructions in the code below: MOV AX,1111111111111111b AND AX,0000000011111111b CALL DISP_BINARY_NUM PUSH AX CALL PRINT_CRLF POP AX OR AX,1111111100000000b CALL DISP_BINARY_NUM PUSH AX CALL PRINT_CRLF POP AX XOR AX,1111111100000000b CALL DISP_BINARY_NUM CALL PRINT_CRLF INT 20H INCLUDE ROUTINES.NGADISP_BINARY_NUM is available here ALIGN 2 ALIGN 4 will be possible uses of the ALIGN Directive to speed up WORD / DWORD accesses in a program when it runs. 2. Coding these additional types of PUSH's will be possible: PUSH OFFSET SOMETHING PUSH 200H PUSH FIVE ;when FIVE EQU 5 is defined 3. These red tape directives will be ignored: .MODEL .CODE .DATA _TEXT ....... _TEXT ends _DATA ....... _DATA ends _STACK ....... _STACK ends PUBLIC EXTRN EXTERN USES ASSUME END if you want all the Interrupts Download MARK and RELEASE if you want to write TSR's Download MARK and RELEASE source code if you want to study the source code All Terminate and Stay Resident utilities on Simtel if you want more TSR's (Last 2 links were suggested by Rugxulo) Our suggestion: Children can get straight away to coding. Theory is for the those who do the University degrees and for those who need to develop their own theory to fit their technology. Intel 8086 Microprocessor (1978) The 8086 Microprocessor is a true 16-bit processor. It has a 16-bit ALU and a 16-bit data bus. This external data bus is the same width as the ALU. The modern Pentiums fetch data 64 bits at a time for their 32-bit ALUs. Intel 8088 Microprocessor (1979) The 8088 was the scaled down version of the 8086. That is why some would list these processors as 8088/8086 instead of 8086/8088. The 8088 processor used the same internal core as the 8086, had the same 16-bit registers, and could address the same 1MB of memory, but the external data bus was reduced to 8 bits. This allowed support chips for the older 8-bit 8085 to be used for the new 8088 too, and far less expensive boards and systems could be made. It is for these reasons that IBM chose the 8088, for the first PC. The 8086 and 8088 both feature 29,000 transistors and 20 address pins (address lines). The number of address pins determines how much memory a microprocessor can access. Twenty address pins give these microprocessors a total address space of one megabyte (2^20 = 1 MB). The 8088 was fully software compatible with the 8086. The 8088 has a 16-bit ALU, but it has an 8-bit data bus. This external data bus is NOT the same width as the ALU. To repeat, the 8088 was the microprocessor in the first IBM PC. The 8086, 8088, 80186, and 80188 all contain 20 address lines (address pins), giving these processors one megabyte of addressable (2^20 = 1MB) main memory. Difference between the 8086 and the 8088 Microprocessors: The 8086 and 8088 are binary compatible with each other, but not pin-compatible. Binary compatibility means that either microprocessor could execute the same programs. Pin-incompatibility means that you can’t plug the 8086 into the slot for 8088 and visa versa, and expect the chips to work. The 8086 and 8088 feature different data bus sizes. The data bus size determines how many bytes of data the microprocessor can read in each cycle. The 8086 features a 16-bit external data bus; the 8086's Bus Interface Unit (BIU) is 16 bits wide, while the 8088 features an 8-bit external data bus; the 8088's Bus Interface Unit (BIU) is 8 bits wide. Another difference is that the 8088 instruction queue is four bytes long instead of six as in 8086. Clones of the 8088 and 8086: The clones of the 8088 and 8086, viz, NEC (Nippon Electric Company's) V20 and V30, can run all the code 8088 and 8086 can. NEC was the first to "clone" the Intel 8088 and 8086 chips with their V20 and V30 designs. The V20 was pin-compatible with the 8088, while the V30 was pin-compatible with the 8086. The V-series ran 20% - 30% faster than the Intel chips when running at the same clock speed. Even though these V20 and V30 chips were pin-compatible with the 8088 and 8086, they also had some extensions to the architecture. They featured all of the "new" instructions on the 80186 / 80188, and also were capable of running in Z-80 mode (directly running programs written for the Z-80 microprocessor). How many address lines did the Z-80 microprocessor have? The Z-80 had 16 address lines (meaning a 16-bit address bus) and could address up to (2^16) 64 Kbytes of memory. The Z-80 instruction code included all the code from the 8080A but added some new ones to nearly double the number of instructions. The disadvantage of the 8080A was it needed three different power supplies. The NEC V20 is a 16-bit microprocessor with 8-bit external data bus. It is object-code and pin-compatible with Intel 8088. The V20 is faster than the 8088, due to internal improvements - dual internal 16-bit data bus, faster effective address calculation, better loop counter/shift register implementation, and some others. The V20 includes Intel 8080 emulation mode, in which it can execute all of the 8080 instructions. Native NEC V20 instruction set includes all 8086/8088 instructions, new instructions from the 80186/80188 microprocessor, and instructions unique to V20 - bit processing, packed BCD instructions and special instructions for switching the processor to 8080 emulation mode and back. The NEC V30 is almost the same as the NEC V20 with the exception that the V30 has a 16-bit external data bus. A quick review of various microprocessors The X86 instruction set was originally developed for the 8086 with its mere 29000 transistors. More instructions have been added within new generations of CPUs. The 80386 had 26 new instructions, the 486 added 6 and the Pentium another 8 new instructions. In 1995 the Pentium processor was expanded with the so-called MMX instructions. That was announced as a multimedia expansion with 57 new instructions. All the modern P6 processors have 8 FP registers, each of which has a bit length of 80. So there is room inside the CPU itself for 8 numbers each of 80 bit length or, for example, 16 numbers each of 32 bit length. New instructions for more effective 3D performance. Instructions which can be called by the programs, 3DNow! and SSE, are examples of this. During the summer of 1998 AMD introduced a new collection of CPU instructions, which improve the 3D execution. 21 new SIMD instructions were added. SIMD instructions enable handling of more data portions with just one instruction. 3DNow! became a big success. The instructions use the same registers, as do MMX and traditional FPU. So they have to share them. Since the registers are 80 bits wide, they can hold two 32 bit numbers simultaneously. In principle Katmai (SSE - Intel's way to improve 3D execution in Pentium III) is significantly more powerful than 3DNow! The 8 new 128 bit registers can actually hold four 32 bit numbers at a time. The full potential of Katmai is not reached within the actual Pentium III design. With the introduction of Pentium 4, the SIMD instruction set was further improved with 144 new instructions. In Pentium III the pipeline was of 10 stages. In Pentium 4 it has been increased to 20 stages. |
|