;要求将 1~36 的数字顺序保存在一个 6*6 矩阵中,然后输出这个矩阵的左下三角部分
;题目链接:http://zhidao.baidu.com/question/1540192905933283827.html
;做而论道编写的程序如下。
;======================================
N = 6 ;矩阵维数 N=(2~9)
DATA SEGMENT
NUM DB 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA, CS:CODE
START:
MOV AX, DATA
MOV DS, AX
LEA SI, NUM
MOV CL, 1
LOOP1:
MOV [SI], CL
INC SI
INC CL
CMP CL, N * N + 1 ;37
JNZ LOOP1
;-----------------------
MOV CX, 1
MOV SI, 0
LOOP2:
MOV BX, 0
LOOP3:
MOV AL, NUM[SI + BX]
MOV AH, 0
MOV DL, 10
DIV DL
MOV DL, AL
ADD DL, 30H
MOV DH, AH
MOV AH, 2
INT 21H
MOV DL, DH
ADD DL, 30H
INT 21H
MOV DL, 20H
INT 21H
;----------------
INC BX
CMP BX, CX
JNZ LOOP3
;----------------
MOV DL, 0DH
MOV AH, 2
INT 21H
MOV DL, 0AH
INT 21H
;----------------
ADD SI, N ;6
INC CX
CMP CX, N + 1 ;7
JNZ LOOP2
;-----------------------
MOV AH, 4CH
INT 21H
CODE ENDS
END START
;======================================
执行后,显示如下:
c:\masm510>MM
01
07 08
13 14 15
19 20 21 22
25 26 27 28 29
31 32 33 34 35 36
c:\masm510>MM
------------
N = 9 时,执行结果如下:
c:\masm510> MM
01
10 11
19 20 21
28 29 30 31
37 38 39 40 41
46 47 48 49 50 51
55 56 57 58 59 60 61
64 65 66 67 68 69 70 71
73 74 75 76 77 78 79 80 81
c:\masm510>
提问者评价:谢谢!
;======================================
做而论道编写的程序,具有通用性,矩阵维数在 2 至 9,都是可用的。
如果把显示部分扩充为三位,那就可以在 2 至 255 范围内使用。
有人说 6*6 的矩阵处理比较难,应该先编写 3*3 的。
呵呵,其实,他这就不懂了,矩阵不论大小,处理起来的难度,都是相同的。
至少在 3 维和 6 维之间,没有任何区别。
;======================================