Category : Assembly Language Source Code
Archive   : CUG292.ZIP
Filename : ASMTST.ASM

 
Output of file : ASMTST.ASM contained in archive : CUG292.ZIP

.title Machine Independent Assembler Test
.module Asmtst

.sbttl Memory Allocation Directives

.radix O ;set default to octal

.byte 0b11000000 ;binary constants
.byte 0B1110

.byte 24 ;octal constants
.byte 024
.byte 0q024
.byte 0Q024
.byte 0o024
.byte 0O024

.byte 0d024 ;decimal constant
.byte 0D024

.byte 0h024 ;hexidecimal constants
.byte 0H024
.byte 0x024
.byte 0X024

.db 0
.dw 0

.radix D ;set default to decimal

.byte 1,2,3,4,5,6,7,8,9
.word 1,2,3,4,5,6,7,8,9

.blkb 16
.ds 16

.blkw 16
.ds 16*2

word: .word .+2
.word .-2
.word 2+.
.word .-(word+2)


.sbttl Boundary Directives

.even
.byte 0
.even
.byte 1
.even
.odd
.byte 2
.odd
.byte 3
.odd
.even
.word 4
.odd
.word 5
.even
.word 6


.sbttl String Directives

.ascii "abcdefgh"
.asciz "abcdefgh"

.page
.sbttl Expression Evaluation

n0x00 = 0x00
n0x01 = 0x01
n0x10 = 0x10
n0xff = 0xff
n0xeeff = 0xeeff


n = 'A ;0x41 single character
n = "AB ;0x4142 double character
n = n0x01 ;0x01 assignment
n = n + n0x01 ;0x02 addition
n = n - n0x01 ;0x01 subtraction
n = n * 0x05 ;0x05 multiplication
n = n / 0x02 ;0x02 division
n = n0x10 % 0x05 ;0x01 modulus
n = n0x10 | n0x01 ;0x11 or
n = n0xff & n0x01 ;0x01 and
n = n0x01 << 4 ;0x10 left shift
n = n0x10 >> 4 ;0x01 right shift
n = n0xff ^ n0x10 ;0xef xor
n = n ^ n0x10 ;0xff xor
n = ~n0x10 ;0xffef 1's complement
n = -n0x10 ;0xfff0 2's complement

n = n0xeeff & 0xff ;0xff low byte
n = (n0xeeff & 0xff00)/0x100 ;0xee high byte

n = n0xeeff % 0x100 ;0xff low byte
n = n0xeeff / 0x100 ;0xee high byte

n = < n0xeeff ;0xff low byte
n = > n0xeeff ;0xee high byte

n = 3*(2 + 4*(6)) ;0x4e expression evaluation
n = 2*(0x20 + <~n0x10) ;0x21e



.page
.sbttl IF, ELSE, and ENDIF

n = 0
m = 0

.if 0
n = 1
.if 0
m = 1
.else
m = 2
.endif
.else
n = 2
.endif

.byte n,m ; n = 2, m = 0

;*******************************************************

n = 0
m = 0

.if 1
n = 1
.if 0
m = 1
.else
m = 2
.endif
.else
n = 2
.endif

.byte n,m ; n = 1, m = 2


.page

n = 0
m = 0

.if 0
n = 1
.if 1
m = 1
.else
m = 2
.endif
.else
n = 2
.endif

.byte n,m ; n = 2, m = 0

;*******************************************************

n = 0
m = 0

.if 1
n = 1
.if 1
m = 1
.else
m = 2
.endif
.else
n = 2
.endif

.byte n,m ; n = 1, m = 1


.page

n = 0
m = 0

.if 0
n = 1
.else
.if 0
m = 1
.else
m = 2
.endif
n = 2
.endif

.byte n,m ; n = 2, m = 2

;*******************************************************

n = 0
m = 0

.if 1
n = 1
.else
.if 0
m = 1
.else
m = 2
.endif
n = 2
.endif

.byte n,m ; n = 1, m = 0


.page

n = 0
m = 0

.if 0
n = 1
.else
.if 1
m = 1
.else
m = 2
.endif
n = 2
.endif

.byte n,m ; n = 2, m = 1

;*******************************************************

n = 0
m = 0

.if 1
n = 1
.else
.if 1
m = 1
.else
m = 2
.endif
n = 2
.endif

.byte n,m ; n = 1, m = 0


.page
.sbttl Local Symbols

lclsym0:
.word 0$,1$,2$,3$,4$ ;forward references
.word 5$,6$,7$,8$,9$

0$: .word 9$
1$: .word 8$
2$: .word 7$
3$: .word 6$
4$: .word 5$
5$: .word 4$
6$: .word 3$
7$: .word 2$
8$: .word 1$
9$: .word 0$
10$:

.word 0$,1$,2$,3$,4$ ;backward references
.word 5$,6$,7$,8$,9$

lclsym1:
.word 0$,1$,2$,3$,4$ ;forward references
.word 5$,6$,7$,8$,9$

0$: .word 9$
1$: .word 8$
2$: .word 7$
3$: .word 6$
4$: .word 5$
5$: .word 4$
6$: .word 3$
7$: .word 2$
8$: .word 1$
9$: .word 0$
10$:

.word 0$,1$,2$,3$,4$ ;backward references
.word 5$,6$,7$,8$,9$

.sbttl Offset calculations

ofsbyte = (10$-0$) ;0x0014
ofsword = ofsbyte/2 ;0x000A

.word 1$+ofsbyte+ofsword ;1$ + 0x001E

.page
.sbttl Area Definitions

.globl code0
.globl cnstnt1,cnstnt2

cnstnt0 == 0xabcd ; global equate

code0: .word a0
.word cnstnt0

.area A (OVR)
cnstnt1 = 0x1234

a0: .word 0x00ff

.area B (ABS,OVR)
cnstnt2 = 0x5678

.word a1

.area A

.=.+0x0020
.word a2

.area B
.org 0x40

.word a0,a1,a2
.word B,OVR

abcdabcd:: ; global symbol

.page
.sbttl Assembler Output File asmtst.sym

; assembled by:
; asxxxx -glosx asmtst

.sbttl Symbol Table

; B **** GX | OVR **** GX | 1 a0 0000 R
; a1 **** GX | a2 **** GX | 2 abcdabcd 004A GR
; cnstnt0 = ABCD G | cnstnt1 = 1234 G | cnstnt2 = 5678 G
; 0 code0 0141 GR | 0 lclsym0 00C7 R | 0 lclsym1 0103 R
; m = 0000 | n = 0001 | n0x00 = 0000
; n0x01 = 0001 | n0x10 = 0010 | n0xeeff = EEFF
; n0xff = 00FF | ofsbyte = 0014 | ofsword = 000A
; 0 word 008C R

.sbttl Area Table

; 0 _CODE size 145 flags 0
; 1 A size 24 flags 4
; 2 B size 4A flags C