汇编高手救命啊,加下注释

来源:百度知道 编辑:UC知道 时间:2024/06/07 10:53:50
快要期末了。汇编老师要写个汇编程序。我选题目如下:
题目15 数字方阵程序
设计任务要求与说明:将n*n个自然数按螺旋纹路填入n*n方阵,要求程序运行时输入参数n,然后输出所需的n阶方阵。
我在网上找到一个程序,代码如下。运行正确,只能输入3-5.不过满足了,应该可以交差,但老师要自己能解释程序,我不会啊。请高手帮忙注释一下。。谢谢100分送上,好了再加分

data segment
buf1 db '1 2 38 9 47 6 5'
buf2 db '1 2 3 412 13 14 511 16 15 610 9 8 7'
buf3 db '1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9'
dbuf db 14 dup(?)
i1 db 0dh,0ah,'this is a fangzhen programme'
db 0dh,0ah,'input q to exit'
db 0dh,0ah,'Please input a number(3--5):','$'
i2 db 0dh,0ah,'input error,please reinput!','$'
n db ?
b db 1
data ends
stack segment
db 100 dup(?)
stack ends
code segment
assume ds:data,cs:code,ss:stack
main:
mov ax,data
mov ds,ax
call clear
lop: lea dx,i1
mov ah,9
int 21h
mov ah,1
int 21h
cmp al,'q&#

注释如下:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

data segment ;数据段定义开始
buf1 db '1 2 38 9 47 6 5'
buf2 db '1 2 3 412 13 14 511 16 15 610 9 8 7'
buf3 db '1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9'
dbuf db 14 dup(?)
i1 db 0dh,0ah,'this is a fangzhen programme'
db 0dh,0ah,'input q to exit'
db 0dh,0ah,'Please input a number(3--5):','$'
i2 db 0dh,0ah,'input error,please reinput!','$'
n db ?
b db 1
data ends ;数据段定义结束
stack segment ;堆栈段定义
db 100 dup(?)
stack ends
code segment ;代码段
assume ds:data,cs:code,ss:stack ;约定段地址
main: ;主程序入口
mov ax,data
mov ds,ax ;把数据段地址赋给ds
call clear ;调用清屏子程序
lop: lea dx,i1 ;取i1的偏移地址(有效地址)赋给dx
mov ah,9
int 21h ;调用9号DOS中断,显示首地址为DS:DX的字符串
mov ah,1
int 21h ;调用1号DOS中断,等待输入一个字符
cmp al,'q'
jz quit ;