用汇编语言二重循环

来源:百度知道 编辑:UC知道 时间:2024/06/11 02:17:38
先显示“Pls input N:”,然后从键盘上读入一个3~9的数字N,程序则输出一个N行N列*号组成的方块。
用条件转移和堆栈回答

程序主要思路就是由外循环进入内循环之前把循环变量CX压栈保护,内循环结束后再弹栈复原
用的就是这个方法啊

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

.model small
.data
str1 db 'Pls input N:$'
.code
start:
mov ax,@data
mov ds,ax
mov dx,offset str1
mov ah,9
int 21h ;显示字符串
lp_in:
mov ah,1
int 21h ;获取输入字符
cmp al,33h
jb lp_in ;小于3跳回
cmp al,39h
ja lp_in ;大于9也跳回
sub al,30h
cbw
mov bx,ax ;BX暂存N
mov cx,ax ;外循环,N次
lp:
mov ah,2
mov dl,0ah
int 21h
mov dl,0dh
int 21h ;换行
push cx ;外循环变量压栈保护
mov cx,bx ;内循环,N次
mov dl,'*'
mov ah,2
lp_1:
int 21h
loop lp_1
pop cx ;弹栈,恢复外循环变量
loop lp

mov ah,4ch
int 21h
end

借上楼的光稍微加了一些无关痛痒的东西,只是让程序美化了点^-^

.model small
.data
str1 db 'Pls input N:$'
.code
start:
mov ax,@data
mov ds,ax
mov