第一题,
A DC 0 | |
B DC 100 | |
YELLOW | LOAD B |
DIV = 10 | |
STORE C | |
MULT = 10 | |
STORE F | |
LOAD B | |
SUB F | |
STORE D | |
LOAD B | |
DIV = 100 | |
STORE E | |
SUB D | |
STORE G | |
BE RED | |
BLUE | LOAD B |
SUB = 999 | |
STORE H | |
BL GREEN | |
PRINT A | |
END | |
RED | LOAD A |
ADD = 1 | |
STORE A | |
BU BLUE | |
GREEN | LOAD B |
ADD = 1 | |
STORE B | |
BU YELLOW |
笨的方法,就是按上面这个程序走,最终肯定能得到答案,但是必须非常小心,不能出错,而且时间起码要花半个小时以上。
但是如果对程序有非常好的洞察力,应该能够立刻知道,这是 计算 三位数 的 palindromes (回文数字)的个数的程序,也就是计数有多少个如 101, 111, 121, ,,这样 aba 形式的数字,所以马上得到 90 (答案),费时不用 三分钟。这个程序非常好的表现了如何实现 flow control的,在汇编语言中,是没有 for loop 的,所有的 flow control, 包括 for loop 都是 通过 goto 来实现的,上面的 G 存储器,就是 E,D 两个头位数 和 末尾数相减,如果得 0, 就是palindromes ,计数器 A 就加 1.
读懂了程序就很容易,简单的排列计算 第一个数字9个选择,第2个数字10个选择,第3个数字没得选,9x10=90 就可以得到 90 这个答案
第2题就更简单了,就是 把八进制的 数 7325 转换成 十进制,一旦花一分钟看懂程序,再花一分钟就可以计算出答案是 3797.
谢谢大家