#CCSP2016C3. 虚拟机设计 Part 2-3

虚拟机设计 Part 2-3

本题满分分值为 45 分,本提交链接为原题的子任务 3 部分,分值为 20 分。

时间限制: N/A

空间限制: N/A

这是一道提交答案题。

题目描述

最终,菜菜自己也将虚拟机编写了出来。菜菜的虚拟机不仅实现了前文所述的所有要求,还增加了检查程序格式错误的功能。只有格式无误的程序才会被执行。出于测试的目的,菜菜希望你能用这套指令编写程序,在虚拟机上完成下述几个任务。每个任务的程序长度均不得多于 40 行。

样例任务

已知 AABB,输出 AABB 中的较小值。

AABB 已经存放于内存当中,AA 存放在 3000 处,BB 存放在 3002 处。

任务解释

包括后面的任务,在没有特殊说明的情况下,所有的已知数据均默认为四位十六进制无符号整数。这里称“AA 存放在 3000 处”,意味着 3000 处存放着 AA 的低 8 位(二进制位),3001 处存放着 AA 的高 8 位(二进制位)。其余没有存放已知数据的内存和寄存器,均已被初始化为 00

在求得答案后,只需要使用 ECHO 指令将其输出即可。

如果提交的程序长度小于等于 40 行、没有格式错误、能通过 STOP 指令正常结束,并且输出了正确的答案,你将会得到该任务相应的分数。

内存情况示意图:

3000 3001 3002 3003 3004
0B 02 15 00 00

图即为 AA 等于 4343(十进制),BB 等于 2121(十进制)时内存的初始情况。

样例程序

RUN
MOV AX T3000
MOV BX T3002
CMP AX BX
JNL 0008
ECHO AX
JMP 0009
ECHO BX
STOP

任务 3(20 分)

已知 N (N>0)N~(N>0)MM,试输出组合数 CNMC_N^M6553665536 取模的结果。

寄存器 AX 存储了 NN 的值,寄存器 BX 存储了 MM 的值。

CNM=N!M!(NM)!C_N^M = \frac{N!}{M!\left(N-M\right)!}

这里 N!N! 表示 NN 的阶乘,0!=10!=1

保证 MN2×102M \le N \le 2 \times 10^2

提交方式

直接将你对该子任务给出的答案提交至代码框即可。