Dseg at 0x10 aa equ r7 bb equ r6 cc equ r5 ddd equ r4 ii equ r3 cseg at 0x0 jmp start compare: clr c xrl a, #0x80 ; s.bb^1.00 inversion sign mov r0, a mov a, b xrl a, #0x80 ; s.aa^1.00 inversion sign subb a, r0 ; s.dd - s.aa ret start: mov P0, #0 mov ii, #0 mov a, ii loop: mov a, P1 add a, ACC mov P1, a ; aa = a & 8 mov a, ii anl a, #8 mov aa, a ; bb = a & 4 mov a, ii anl a, #4 mov bb, a ; cc = a & 2 mov a, ii anl a, #2 mov cc, a ; dd = a - 4 ;clr cc mov a, ii subb a, #4 mov ddd, a ; (bb > cc) mov a, bb mov b, cc call compare jnc M1 ; if(bb>cc) goto M1 ; (bb > cc) & (dd < bb) mov a, bb mov b, ddd call compare jnc M1 ; if (bb > dd) goto M1 jmp M2 ; (aa != dd) M1: mov a, aa subb a, ddd jnz M2 jmp M3 M2: mov r1, #0x01 sjmp M4 M3: mov r1, #0x00 ; S=0 M4: mov a, P1 orl a, r1 ; S=1 mov P1, a inc ii mov a, ii cjne a, #0x08, loop mov P0, P1 jmp $ end