46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
@% = 2
|
|
PRINT "1100 + 1100 = ";
|
|
PROC4bitadd(1,1,0,0, 1,1,0,0, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1100 + 1101 = ";
|
|
PROC4bitadd(1,1,0,0, 1,1,0,1, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1100 + 1110 = ";
|
|
PROC4bitadd(1,1,0,0, 1,1,1,0, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1100 + 1111 = ";
|
|
PROC4bitadd(1,1,0,0, 1,1,1,1, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1101 + 0000 = ";
|
|
PROC4bitadd(1,1,0,1, 0,0,0,0, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1101 + 0001 = ";
|
|
PROC4bitadd(1,1,0,1, 0,0,0,1, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1101 + 0010 = ";
|
|
PROC4bitadd(1,1,0,1, 0,0,1,0, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
PRINT "1101 + 0011 = ";
|
|
PROC4bitadd(1,1,0,1, 0,0,1,1, e,d,c,b,a) : PRINT e,d,c,b,a
|
|
END
|
|
|
|
DEF PROC4bitadd(a3&, a2&, a1&, a0&, b3&, b2&, b1&, b0&, \
|
|
\ RETURN c3&, RETURN s3&, RETURN s2&, RETURN s1&, RETURN s0&)
|
|
LOCAL c0&, c1&, c2&
|
|
PROCfulladder(a0&, b0&, 0, s0&, c0&)
|
|
PROCfulladder(a1&, b1&, c0&, s1&, c1&)
|
|
PROCfulladder(a2&, b2&, c1&, s2&, c2&)
|
|
PROCfulladder(a3&, b3&, c2&, s3&, c3&)
|
|
ENDPROC
|
|
|
|
DEF PROCfulladder(a&, b&, c&, RETURN s&, RETURN c1&)
|
|
LOCAL x&, y&, z&
|
|
PROChalfadder(a&, c&, x&, y&)
|
|
PROChalfadder(x&, b&, s&, z&)
|
|
c1& = y& OR z&
|
|
ENDPROC
|
|
|
|
DEF PROChalfadder(a&, b&, RETURN s&, RETURN c&)
|
|
s& = FNxorgate(a&, b&)
|
|
c& = a& AND b&
|
|
ENDPROC
|
|
|
|
DEF FNxorgate(a&, b&)
|
|
LOCAL c&, d&
|
|
c& = a& AND NOT b&
|
|
d& = b& AND NOT a&
|
|
= c& OR d&
|