*
***
*****
*******
*********
在这里谢谢各位啦
呵呵,有趣的一道C语言中常见的题,我来做个吧:
CR MACRO ;回车换行,方便调用
MOV AH,2
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
ENDM
CSEG SEGMENT
ASSUME CS:CSEG
MAIN: MOV AH,2
MOV BH,1 ;BH中的值控制行数
NEXT: MOV CL,BH ;CL用于存放 2*(BH)-1,后面输出*号用
SHL CL,1
DEC CL
MOV BL,6
SUB BL,BH
MOV DL,20H
NEXT0: INT 21H
DEC BL ;这里暂时用BL控制输出空格数
JNZ NEXT0
MOV BL,0 ;这里用BL控制输出*号个数
MOV DL,2AH
NEXT1: INT 21H
INC BL
CMP BL,CL
JB NEXT1
CR
INC BH
CMP BH,6
JB NEXT
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
来对比下C语言的程序
void main()
{
int i,m,n;
for(m=1;m<5;m++) ;m也就是上题的BH中的值
{
for(i=5-m;i>0;i--) printf(" "); ;i也就是第一个BL中的值
for(n=0;n<2*m-1;n++) printf("*"); ;n类比于第二个BL中的值
printf("\n");
}
}
还是C语言方便啊,不过效率嘛