DATA: .BLKB 16 s0: .ASCII /Give me two intergers a and b -> / .BYTE 0 .BLKB 222 s1: .ASCII /a=0 and b=0 / .BYTE 10 .BYTE 0 .BLKB 242 s2: .ASCII /a=0 and b>0/ .BYTE 10 .BYTE 0 .BLKB 243 s3: .ASCII /a=0 and b<0/ .BYTE 10 .BYTE 0 .BLKB 243 s4: .ASCII /a>0 and b=0/ .BYTE 10 .BYTE 0 .BLKB 243 s5: .ASCII /a>0 and b>0/ .BYTE 10 .BYTE 0 .BLKB 243 s6: .ASCII /a>0 and b<0/ .BYTE 10 .BYTE 0 .BLKB 243 s7: .ASCII /a<0 and b=0/ .BYTE 10 .BYTE 0 .BLKB 243 s8: .ASCII /a<0 and b>0/ .BYTE 10 .BYTE 0 .BLKB 243 s9: .ASCII /a<0 and b<0/ .BYTE 10 .BYTE 0 .BLKB 243 s10: .ASCII /I should not be here..../ .BYTE 0 .BLKB 231 s11: .ASCII /I shoule be here just once for / .BYTE 0 .BLKB 224 .ENTRY Main, 0 PUSHAL s0 CALLS #1, printstr PUSHAL DATA+12 CALLS #1, readnum PUSHAL DATA+8 CALLS #1, readnum PUSHL #10 CALLS #1, printchar MOVL DATA+12,R2 CMPL R2, #0 BEQL L_1 MOVL #0, R2 JMP L_2 L_1: MOVL #1, R2 L_2: CMPL #0, R2 BNEQ L_3 JMP L_4 L_3: MOVL DATA+8, R2 CMPL R2, #0 BEQL L_6 MOVL #0, R2 JMP L_7 L_6: MOVL #1, R2 L_7: CMPL #0, R2 BNEQ L_8 JMP L_9 L_8: PUSHAL s1 CALLS #1, printstr JMP L_5 L_9: MOVL DATA+8, R2 CMPL R2, #0 BGTR L_11 MOVL #0, R2 JMP L_12 L_11: MOVL #1, R2 L_12: CMPL #0, R2 BNEQ L_13 JMP L_14 L_13: PUSHAL s2 CALLS #1, printstr JMP L_10 L_14: PUSHAL s3 CALLS #1, printstr L_10: L_5: JMP L_0 L_4: MOVL DATA+12,R2 CMPL R2, #0 BGTR L_15 MOVL #0, R2 JMP L_16 L_15: MOVL #1, R2 L_16: CMPL #0, R2 BNEQ L_17 JMP L_18 L_17: MOVL DATA+8, R2 CMPL R2, #0 BEQL L_20 MOVL #0, R2 JMP L_21 L_20: MOVL #1, R2 L_21: CMPL #0, R2 BNEQ L_22 JMP L_23 L_22: PUSHAL s4 CALLS #1, printstr JMP L_19 L_23: MOVL DATA+8, R2 CMPL R2, #0 BGTR L_25 MOVL #0, R2 JMP L_26 L_25: MOVL #1, R2 L_26: CMPL #0, R2 BNEQ L_27 JMP L_28 L_27: PUSHAL s5 CALLS #1, printstr JMP L_24 L_28: PUSHAL s6 CALLS #1, printstr L_24: L_19: JMP L_0 L_18: MOVL DATA+8, R2 CMPL R2, #0 BEQL L_29 MOVL #0, R2 JMP L_30 L_29: MOVL #1, R2 L_30: CMPL #0, R2 BNEQ L_31 JMP L_32 L_31: PUSHAL s7 CALLS #1, printstr JMP L_0 L_32: MOVL DATA+8, R2 CMPL R2, #0 BGTR L_34 MOVL #0, R2 JMP L_35 L_34: MOVL #1, R2 L_35: CMPL #0, R2 BNEQ L_36 JMP L_37 L_36: PUSHAL s8 CALLS #1, printstr JMP L_33 L_37: PUSHAL s9 CALLS #1, printstr L_33: L_0: PUSHL #10 CALLS #1, printchar MOVL #1, DATA+4 L_38: CMPL DATA+4, #3 BLEQ L_39 JMP L_40 L_39: MOVL #1, DATA+0 L_41: CMPL DATA+0, #3 BLEQ L_42 JMP L_43 L_42: MOVL DATA+4, R2 CMPL R2, DATA+0 BGEQ L_45 MOVL #0, R2 JMP L_46 L_45: MOVL #1, R2 L_46: CMPL #0, R2 BNEQ L_47 JMP L_48 L_47: PUSHL DATA+4 CALLS #1, printnum PUSHL #^A/ / CALLS #1, printchar PUSHL DATA+0 CALLS #1, printnum PUSHL #10 CALLS #1, printchar JMP L_44 L_48: L_44: ADDL2 #1, DATA+0 JMP L_41 L_43: ADDL2 #1, DATA+4 JMP L_38 L_40: PUSHL #10 CALLS #1, printchar MOVL #1, DATA+0 L_49: MOVL DATA+0, R2 CMPL R2, #3 BLEQ L_50 MOVL #0, R2 JMP L_51 L_50: MOVL #1, R2 L_51: CMPL #0, R2 BNEQ L_52 JMP L_53 L_52: MOVL DATA+0, DATA+4 L_54: PUSHL DATA+4 CALLS #1, printnum PUSHL #^A/ / CALLS #1, printchar PUSHL DATA+0 CALLS #1, printnum PUSHL #10 CALLS #1, printchar MOVL DATA+4, R2 ADDL2 #1, R2 MOVL R2, DATA+4 MOVL DATA+4, R2 CMPL R2, #3 BGTR L_55 MOVL #0, R2 JMP L_56 L_55: MOVL #1, R2 L_56: CMPL #0, R2 BNEQ L_57 JMP L_54 L_57: MOVL DATA+0, R2 ADDL2 #1, R2 MOVL R2, DATA+0 JMP L_49 L_53: PUSHL #10 CALLS #1, printchar MOVL #5, DATA+4 L_58: MOVL DATA+4, R2 CMPL R2, #10 BGEQ L_59 MOVL #0, R2 JMP L_60 L_59: MOVL #1, R2 L_60: CMPL #0, R2 BNEQ L_61 JMP L_62 L_61: PUSHL #10 CALLS #1, printchar PUSHAL s10 CALLS #1, printstr PUSHL #10 CALLS #1, printchar JMP L_58 L_62: MOVL #1, DATA+4 L_63: MOVL DATA+4, R2 MULL3 #5, R2, R2 MOVL R2, DATA+4 PUSHAL s11 CALLS #1, printstr PUSHL DATA+4 CALLS #1, printnum PUSHL #10 CALLS #1, printchar MOVL DATA+4, R2 CMPL R2, #3 BGTR L_64 MOVL #0, R2 JMP L_65 L_64: MOVL #1, R2 L_65: CMPL #0, R2 BNEQ L_66 JMP L_63 L_66: RET .END MAIN