80x86汇编:显示一个螺旋数据方阵
(2019-04-09 12:09:04)| 分类: 80x86 |
;
这是一个课程设计的题目。
;根据键盘输入的一个数字,显示相应的数据螺旋方阵。
;如输入
4,则显示:
; 1
2 3
4
;12
13 14
5
;11
16 15
6
;10
9 8
7
;共需要显示 4
* 4 = 16 个数字。
;要求:根据键盘输入的数字(2~15),显示相应的数据方阵。
;这是 2009
年的题目,已经有了正确的答案。
;但是,答案中的程序,竟有 370 行 !有些太夸张了吧 !
;做而论道实在也没有耐心往下看,自己编了编,也就用了大约一半的篇幅,就实现了相同的功能。
;=========================================================
ASSUME
CS:CC, DS:QWER
;-------------------------------------
QWER
SEGMENT
;--------------------------------
;--------------------------------
;--------------------------------
QWER
ENDS
;-------------------------------------
CC
SEGMENT
START:
IN_X:
IN_END:
;----------------------------
LOOPS:
LX:
NEXT:
;----------------------------
EXIT:
;---------------------------------------------
HH_HH:
;修改行序号
HH_ADD1:
;行序号递增
HH_SUB1:
;行序号递减
HH_NEXT:
E_HH:
;---------------------------------------------
LL_LL:
;修改列序号
LL_ADD1:
;列序号递增
LL_SUB1:
;列序号递减
LL_NEXT:
E_LL:
;---------------------------------------------
DISP_MATRIX:
;显示矩阵
DP0:MOV
CL, CH
DP1:MOV
AL, [SI]
;---------------------------------------------
DISP3:
;显示矩阵中的数字
D_ALL:
D_SG:
;---------------------------------------------
CR_LF:
;回车_换行
;---------------------------------------------
CC
ENDS
;=========================================================
在汇编语言程序里面定义 N 阶方阵,和定义数组没有什么两样。
在样例矩阵中已经看到,其中的元素都是顺序排列成一条直线:
此时,是看不出来“螺旋”的,但是,按照 4 行 4
列显示的时候,效果可就不同了:
1,
2, 3,
4
12, 13,
14, 5
11, 16,
15, 6
10,
9, 8,
7
把 1~16 这
16 个数,依次填入数组,填充的位置,是怎么变化呢?
填充的位置,开始是:第 0 位,以后是:第 1、第 2、第 3,依次是加
1。
然后是向下走,填充的位置,分别是:第 7、第 11、第 15,依次是加
4。
然后是向左走,填充的位置,依次是减 1。
然后是向上走,填充的位置,依次是减 4。
呵呵,如果看不出来,就仔细看看样例矩阵吧。
加一、加四、减一、减四,反复执行这四步,确定目的位置后再进行填充。
那么,每一步,要加(或者减)多少次呢?这可是本题目的关键。
总结这些个规律,实际上是中小学的数学问题。
呵呵,详细地就不说了。看样例矩阵,就能找出答案。
找到了规律,再用语言,以最简单的形式把规律表述出来,让计算机能够理解执行,这可就不是很容易做到的。
用 C
语言编程,比较简单,编写程序比较方便。
用汇编语言编程,就复杂多了。
但是,追求就能高一些,不仅要逻辑正确,还要使程序代码简短一些、运行的速度快一些。
网上的 370
行程序,功能虽正确,可是,不知道在什么地方,写得有些过于罗嗦了。
;=========================================================
本程序执行时的人机交互界面如下:
c:\masm510>mm
This
program can generate a clockwise spiral matrix of order
N.
If you
type 4, the matrix of order 4 will appear :
Please
input a number(2~15): 6
c:\masm510>mm
This
program can generate a clockwise spiral matrix of order
N.
If you
type 4, the matrix of order 4 will appear :
Please
input a number(2~15): 10
c:\masm510>
更多阶数,可见:http://tieba.baidu.com/p/4880389906
;=========================================================
欢迎转载,但是希望注明来源。
前一篇:格雷码(四)

加载中…