DATA: .BLKB 288 s0: .ASCII /END.../ .BYTE 0 .BLKB 249 s1: .ASCII /Give me two numbers / .BYTE 0 .BLKB 235 s2: .ASCII / and / .BYTE 0 .BLKB 250 s3: .ASCII /10*/ .BYTE 0 .BLKB 252 s4: .ASCII / = / .BYTE 0 .BLKB 252 s5: .ASCII /neg is / .BYTE 0 .BLKB 248 s6: .ASCII /Expr is / .BYTE 0 .BLKB 247 s7: .ASCII /and 1 less is / .BYTE 0 .BLKB 241 s8: .ASCII /Logic / .BYTE 0 .BLKB 249 .ENTRY Main, 0 MOVB #^A/I/, DATA+261 MOVB #^A/J/, DATA+260 MOVAL s0, R2 MOVAL DATA+4, R3 MOVL #0, R4 L_0: MOVB (R2), (R3) ADDL2 #1, R3 ADDL2 #1, R2 ADDL2 #1, R4 CMPL R4, #256 BGEQ L_1 JMP L_0 L_1: PUSHAL s1 CALLS #1, printstr PUSHL DATA+261 CALLS #1, printchar PUSHAL s2 CALLS #1, printstr PUSHL DATA+260 CALLS #1, printchar PUSHL #^A/:/ CALLS #1, printchar PUSHAL DATA+284 CALLS #1, readnum PUSHAL DATA+280 CALLS #1, readnum MOVL DATA+284,R2 MULL2 DATA+280,R2 MULL2 #10, R2 MOVL R2, DATA+276 MOVL DATA+276,R2 MULL2 #2, R2 CMPL #10, #0 BNEQ L_2 CALLS #0, ZERO_DIV L_2: DIVL2 #10, R2 MOVL DATA+284,R3 MULL3 #10, R3, R3 ADDL2 R3, R2 MOVL DATA+280,R3 MULL3 #5, R3, R3 MULL2 #10, R3 ADDL2 R3, R2 MOVL R2, DATA+272 MOVL DATA+276,R2 MULL2 #2, R2 CMPL #10, #0 BNEQ L_3 CALLS #0, ZERO_DIV L_3: DIVL2 #10, R2 MOVL DATA+284,R3 MULL3 #10, R3, R3 ADDL2 R3, R2 MOVL DATA+280,R3 MULL3 #5, R3, R3 MULL2 #10, R3 ADDL2 R3, R2 MOVL R2, DATA+264 MOVL DATA+264,R2 SUBL2 #1, R2 MOVL R2, DATA+264 MOVL DATA+272,R2 SUBL3 R2, #-10, R2 MOVL R2, DATA+268 MOVL DATA+264,R2 CMPL R2, DATA+264 BLEQ L_4 MOVL #0, R2 JMP L_5 L_4: MOVL #1, R2 L_5: MOVL R2, DATA+0 PUSHAL s3 CALLS #1, printstr PUSHL DATA+284 CALLS #1, printnum PUSHL #^A/*/ CALLS #1, printchar PUSHL DATA+280 CALLS #1, printnum PUSHAL s4 CALLS #1, printstr PUSHL DATA+276 CALLS #1, printnum PUSHL #10 CALLS #1, printchar PUSHAL s5 CALLS #1, printstr PUSHL DATA+268 CALLS #1, printnum PUSHL #10 CALLS #1, printchar PUSHAL s6 CALLS #1, printstr PUSHL DATA+272 CALLS #1, printnum PUSHAL s7 CALLS #1, printstr MOVL DATA+272,R2 SUBL2 #1, R2 PUSHL R2 CALLS #1, printnum PUSHL #10 CALLS #1, printchar PUSHAL DATA+4 CALLS #1, printstr PUSHL #10 CALLS #1, printchar PUSHAL s8 CALLS #1, printstr PUSHL DATA+0 CALLS #1, printnum RET .END MAIN