Menu

Tree [r2] /
 History

HTTPS access


File Date Author Commit
 asa386.c 2025-03-02 rombios [r1] initial post
 asa386.h 2025-03-02 rombios [r1] initial post
 assemble.c 2025-03-02 rombios [r1] initial post
 assemble.h 2025-03-02 rombios [r1] initial post
 error.c 2025-03-02 rombios [r1] initial post
 error.h 2025-03-02 rombios [r1] initial post
 forward.c 2025-03-02 rombios [r1] initial post
 forward.h 2025-03-02 rombios [r1] initial post
 makefile 2025-03-02 rombios [r1] initial post
 opcodes.c 2025-03-02 rombios [r1] initial post
 opcodes.h 2025-03-02 rombios [r1] initial post
 operands.c 2025-03-02 rombios [r1] initial post
 operands.h 2025-03-02 rombios [r1] initial post
 output.c 2025-03-02 rombios [r1] initial post
 output.h 2025-03-02 rombios [r1] initial post
 pseudoop.c 2025-03-02 rombios [r1] initial post
 pseudoop.h 2025-03-02 rombios [r1] initial post
 readme.txt 2025-03-02 rombios [r1] initial post
 scanner.c 2025-03-02 rombios [r1] initial post
 scanner.h 2025-03-02 rombios [r1] initial post
 symtable.c 2025-03-02 rombios [r1] initial post
 symtable.h 2025-03-02 rombios [r1] initial post
 x86table.h 2025-03-02 rombios [r1] initial post

Read Me

All source related to ASA386 is being placed in the PUBLIC DOMAIN
now compiles under Turbo C++ 3.0 and GCC 2.95


name:		ASA386	Avatar's System Assembler
author:		Samuel Igwe
description:	The second incarnation of my system assembler. Designed
		and written to allow me to assemble kernel asm code.

		Supports 8086 - 80386 instructions and subsets of the
		memory addressing formats. Operand size overrides are
		allowed, Address size overrides are FORBIDDEN.


pseudoops:	PMODE	=generate 32 bit code
		RMODE	=generate 16 bit code
		DB	=define byte
		DW	=define word
		DD	=define dword
		ALIGN	=align segment to argument offset
		EQU	=equate label to value
		RADIX	=set current number base
		SEGMENT	=set current segment (CODE|DATA|STACK|BSS)


segments:	CODE	=read/only segment in PMODE
		DATA	=all data
		STACK	=allocated at load time, no is generated
		BSS	=blank static storage. allocated at load time
			 immediately following the DATA segment.
			 the DATA segment is extended to accomodate
			 the size of the BSS


syntax:		compatible to TASM (borlands turbo assembler).
		db	20dup(0):	creates 20 bytes of value 0
		db	0[20]:		same as above

		any symbols referenced in a pseudoop instruction must
		have already been defined and assigned a value. forward
		references are only valid with opcodes.

		string values can be used as constants. for example:
		mov al,'o'
		mov eax,"MODE"

		
labels:		local labels begin with the "@" prefix. local labels
		are only valid until the next declaration of a global
		label
		all global labels must begin with a letter (upper or lower
		case)	

outputs:	raw:	.bin
		aef:	.aef	(avatar executable format) see output.h