Assembler for SISC 0.99 written by George Ho (kyho@csie.nctu.edu.tw). (何凱元) patched by Jimmy Chen(jinming@csie.nctu.edu.tw).陳俊明 可用指令: "LOAD","LDI","STORE","MOVE","ADD","FADD","OR","AND","XOR", "ROTR","BR","HALT","NOP","GETC","PUTC","GETI","PUTI","GETS","PUTS", "CMP","JLT","JEQ","JGT","CALL","RET" 假指令: ORG,DB,END 注意: Label前不可有空白,Label後加":",而且要自成一行 (可跟註解同一行) 指令與假指令前一定要有空白或TAB registers前一定要加R, R0,R1,R2...RD,RE,RF 執行方法: *** rename your siscasm.txt to siscasm.pl perl siscasm.pl 參考程式--猜數字 ================================== INPUT ============================== ORG 0 CMP R0,R0 JEQ begin HELLO: ; Hello DB 48,45,4C,4C,4F,0D,0A,32,24,24 INPUT: ; Please input a num: DB 49,4E,50,55,54,20,41,20,4E,55,4D,24 LARGER: DB 54,6F,6F,20,6C,61,72,67,65,21,20,61,67,61,69,6E,3A,0D,0A,24 LESS: DB 54,6F,6F,20,73,6D,61,6C,6C,21,20,61,67,61,69,6E,3A,0D,0A,24 WIN: DB 59,6F,75,20,67,6F,74,20,69,74,21,0D,0A,24 ; NOP begin: PUTS HELLO LDI R1,80 ;THE ANSWER start: PUTS INPUT GETI CMP R1,R0 ;COMPARE R1,R0 JLT larger ;F1,lessthen ;IF LT GOTO lessthen JEQ end ;F2,end ;IF EQ GOTO end ;larger PUTS LESS CMP R0,R0 JEQ start ;goto start larger: PUTS LARGER CMP R0,R0 JEQ start ;goto start end: PUTS WIN HALT END ================================== OUTPUT ============================== F000 ; CMP R0,R0 F252 ; JEQ begin ; HELLO: ; Hello 4845 4C4C 4F0D 0A32 2424 ; INPUT: ; Please input a num: 494E 5055 5420 4120 4E55 4D24 ; LARGER: 546F 6F20 6C61 7267 6521 2061 6761 696E 3A0D 0A24 ; LESS: 546F 6F20 736D 616C 6C21 2061 6761 696E 3A0D 0A24 ; WIN: 596F 7520 676F 7420 6974 210D 0A24 ; ; 0000 ; NOP ; begin: D604 ; PUTS HELLO 2180 ; LDI R1,80 ;THE ANSWER ; start: D60E ; PUTS INPUT D200 ; GETI F010 ; CMP R1,R0 ;COMPARE R1,R0 F166 ; JLT larger ;F1,lessthen ;IF LT GOTO lessthen F26C ; JEQ end ;F2,end ;IF EQ GOTO end ; ;larger D62E ; PUTS LESS F000 ; CMP R0,R0 F256 ; JEQ start ;goto start ; larger: D61A ; PUTS LARGER F000 ; CMP R0,R0 F256 ; JEQ start ;goto start ; end: D642 ; PUTS WIN C000 ; HALT ;