;输出一个正方形边框;输出一个正方形边框
CODES SEGMENT
ASSUME CS:CODES
;输出10个‘_’
Out_ proc
mov cx,10
OutInstruction:;真正的输出指令
mov dx,2dh
mov ah,02h
int 21h
dec cx
cmp cx,0
jnz OutInstruction
ret
Out_ endp
;输出换行指令
OutEnter proc
xor dx,dx
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
OutEnter endp
;输出8个空格
OutSpace proc
mov cx,8
OutInstructions:
mov dx,20h
mov ah,02h
int 21h
dec cx
cmp cx,0
jnz OutInstructions
ret
OutSpace endp
START:
;输出10个-
call Out_
;输出换行
call OutEnter
mov bx,08
Middle:
;输出‘|’
MOV DX,7CH
MOV AH,02H
INT 21H
;输出8个空格
call OutSpace
;输出‘|’
MOV DX,7CH
mov ah,02h
int 21h
;输出换行
call OutEnter
;检测是否需要再次输出 ‘| |’
dec bx
cmp bx,0
jnz Middle;
;再次输出--
call Out_
;输出换行
call OutEnter
MOV AH,4CH
INT 21H
CODES ENDS
END START
这里说下自己的心得吧,我觉得,把要使用的几个功能打包成函数 OutSpace,OutEnter,Out_等等,另外就是屡错屡犯的一点就是在函数的末尾,
也就是Out_ endp之前一定要加一句 ret
还有就是,完成一个功能调试一步,再有就是,在开始编码之前一定要画流程图,至少自己要知道自己的程序流程是什么...又犯错误了!!!