From CPCWiki - THE Amstrad CPC encyclopedia!
Revision as of 11:38, 9 September 2015 by FloppySoftware (Talk | contribs) (Modified the download url)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


ZSM is an assembler for the Z80 microprocessor. It uses standard Zilog/Mostek mnemonics, supports conditional assembly and produces Intel HEX file suitable for loading with the CP/M LOAD utility. ZSM is a disk based assembler, i.e. source code is read from disk, the resulting object code is written to disk and an optional print file can be written to disk. Alternatively the print file can be redirected to the console.

ZSM is also known as Z80ASM or Z80ASMUK.


The assembler recognises all standard Z80 mnemonics as defined in the Z80 CPU Technical Manual. The following mnemonics are recognised in both forms shown.

    ADC A,s        ADC s
    ADD A,n        ADD n
    ADD A,r        ADD r
    ADD a,(HL)     ADD (HL)
    ADD a,(IX+d)   ADD (IX+d)
    ADD a,(IY+d)   ADD (IY+d)


Operands in instructions and pseudo-ops may consist of arithmetic expressions which are evaluated at assembly time and the calculated value used as part of the object code. The following operators may be used to form expressions:

    +              Addition
    -              Subtraction (or unary Negation)
    *              Multiplication
    /              Division
    .MOD.          Modulus
    < or .GT.      Greater Than. X.GT.Y true if X greater than Y.
    .GE.           Greater  than  or  Equal.  X.GE.Y true  if  X
                   greater than or equal to Y.
    > or .LT.      Less Than. X.LT.Y true if X less than Y.
    .LE.           Less  than or Equal.  X.LE.Y true if  X  less
                   than or equal to Y.
    = or .EQ.      Equal. X.EQ.Y true if X equals Y.
    .NE.           Not Equal. X.NE.Y true if X not equal to Y.
    .SHL. n        Shift Left n bits.
    .SHR. n        Shift Right n bits.
    .NOT.          Logical NOT (unary)
    .AND.          Logical AND
    .OR.           Logical OR
    .XOR.          Logical Exclusive OR
    .LOW.          Low byte of expression (.MOD. 256)
    .HIGH.         High byte of expression (.SHR. 8)


It was written by LEHMAN CONSULTING SERVICES in 1977, and enhanced by Ray Halls in 1982, and Neil Harrison in 1983.

It was originally published in the US User Group, Vol 16, and later in the CP/M Users Group (UK).

It's in the Public Domain.

The source code in Z80 assembler is available also, and it can compile itself.


Available in http://www.floppysoftware.es.