80x86 汇编编程:输出一个矩阵的左下三角部分

来源:互联网 发布:天猫淘宝商城正品 编辑:程序博客网 时间:2024/05/01 05:17

;要求将 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 维之间,没有任何区别。

;======================================


0 0
原创粉丝点击