80868汇编语言实现输入3-20输出数字螺旋矩阵
时间: 2024-03-08 11:50:23 浏览: 26
好的,下面是一个简单的示例程序,可以在8086汇编语言下实现输入3-20输出数字螺旋矩阵:
```
.MODEL SMALL
.STACK 100h
.DATA
n DB ?
a DB 20 DUP (?)
m DB 20 DUP (20 DUP (?))
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 输入矩阵大小n
MOV AH, 1
INT 21h
SUB AL, 30h
MOV n, AL
; 判断矩阵大小是否为3-20
CMP n, 3
JB ERROR
CMP n, 20
JA ERROR
; 初始化矩阵
MOV CL, n
MOV CH, 0
MOV SI, 0
MOV DI, 1
MOV BL, 1
MOV [m+SI], BL
INC SI
; 填充矩阵
LOOP1:
MOV CX, CH
MOV DX, CL
DEC DX
; 向右填充
MOV AH, 0
LOOP2:
MOV BL, [m+SI-1]
ADD BL, 1
MOV [m+SI], BL
INC SI
DEC DX
CMP DX, 0
JNE LOOP2
; 向下填充
MOV BX, CL
DEC BX
LOOP3:
MOV BL, [m+SI-CL]
ADD BL, 1
MOV [m+SI], BL
ADD SI, CL
DEC BX
CMP BX, 0
JNE LOOP3
; 向左填充
MOV CX, CH
MOV DX, CL
DEC DX
LOOP4:
MOV BL, [m+SI-1]
ADD BL, 1
MOV [m+SI], BL
DEC SI
DEC DX
CMP DX, 0
JNE LOOP4
; 向上填充
MOV BX, CH
DEC BX
LOOP5:
MOV BL, [m+SI-CL]
ADD BL, 1
MOV [m+SI], BL
SUB SI, CL
DEC BX
CMP BX, 0
JNE LOOP5
; 更新填充方向
ADD CH, 2
ADD CL, 2
CMP CL, n
JBE LOOP1
; 输出矩阵
MOV AH, 2
MOV DL, 0Dh
INT 21h
MOV DL, 0Ah
INT 21h
MOV CX, n
MOV SI, 0
LOOP6:
MOV BX, n
MOV DI, 0
LOOP7:
MOV AL, [m+SI+DI]
ADD AL, 30h
MOV DL, AL
INT 21h
INC DI
CMP DI, BX
JNE LOOP7
ADD SI, n
MOV DL, 0Dh
INT 21h
MOV DL, 0Ah
INT 21h
DEC CX
CMP CX, 0
JNE LOOP6
; 退出程序
MOV AH, 4Ch
INT 21h
; 错误处理
ERROR:
MOV AH, 9
MOV DX, OFFSET ERR_MSG
INT 21h
MOV AH, 4Ch
INT 21h
; 错误信息
ERR_MSG DB 'Input error!', 0
MAIN ENDP
END MAIN
```
该程序首先通过`INT 21h`中断输入一个数字n,然后判断n是否在3-20范围内。接着,程序通过一个循环来填充数字螺旋矩阵,具体方法是按照向右、向下、向左、向上的顺序填充每一圈数字,直到矩阵被填满。最后,程序通过`INT 21h`中断输出数字螺旋矩阵。如果输入的数字不在3-20范围内,程序会输出一个错误信息并退出。
注意:该程序只是一个简单的示例,可能还存在一些小错误或不足之处,需要根据实际情况进行调整。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)