INP
STO A
INP
STO B
INP
STO C
LDA A
CMP B
BRP CHECK_C
LDA B
STA TEMP
LDA A
STA B
LDA TEMP
STA A
CHECK_C LDA C
CMP B
BRN CHECK_ABOVE
BR CHECK_BELOW
CHECK_ABOVE LDA C
CMP A
BRP PRINT_MEDIAN
BR PRINT_A
CHECK_BELOW LDA B
CMP A
BRP PRINT_MEDIAN
BR PRINT_A
PRINT_MEDIAN LDA A
ADD C
DIV TWO
ADD B
OUT
HLT
PRINT_A LDA A
OUT
HLT
TWO DAT 2
TEMP DAT 0
该程序首先输入三个数字并存储在A、B和C寄存器中。然后,它比较A和B的值,并使用交换元素的技巧来排序这两个数字(保证A中包含小的数字)。
接下来,程序比较C和A或B,以确定哪个数字是中位数。如果C比A或B大,则输出A的值,如果C比A或B小,则输出中位数的计算结果。
计算中位数时,程序将A和C的和除以2,然后加上B的两倍。最后的结果通过OUT命令输出,程序停止运行。