问题描述
编制在屏幕上显示用*组成的三角形的程序
代码实现
STACK SEGMENT STACK;初始化堆栈段
DB 1024 DUP(0)
STACK ENDS;堆栈段结束
DATA SEGMENT;定义数据段
I DB 8;行数
J DB 1;首行字符数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段
ASSUME CS:CODE, DS:DATA;指明段寄存器与段的关系
BEGIN:
MOV AX, DATA
MOV DS, AX;装入DS
MOV CL,I
MOV CH,00H;装入CX作为行数的循环
LOPI:
MOV BL,00H;外层循环,为行数循环,置BL寄存器为0,作为输出*的计数器
LOPJ:
MOV DL,'*';输出一个*
MOV AH,02H
INT 21H
INC BL;输出一次*,计数器加一
CMP BL,J;与当前的J(该行*的个数)比较
JNZ LOPJ;若不等于J则跳回LOPJ继续输出*
INC J;跳出LOPJ后J加一,为下一行的*个数
MOV DL,0AH;输出换行符
MOV AH,02H
INT 21H
LOOP LOPI;(CX)=(CX)-1,若(CX)不等于0则跳回LOPI
MOV AH, 4CH
INT 21H;程序结束
CODE ENDS
END BEGIN