80x86 汇编语言编程:用 “*” 显示一个三角形

来源:互联网 发布:python 多行命令 编辑:程序博客网 时间:2024/06/05 04:45

想输出的是:


*

***

*****


题目链接:http://zhidao.baidu.com/question/1882006666276814468.html


提问者给出的程序错误很多,这里就不写了。


做而论道编写的程序如下:


DATA SEGMENT

    I  DB  23     ;行数

    J  DB  8      ;首行字符数

DATA ENDS

CODE SEGMENT

    ASSUME CS:CODE, DS:DATA

MAIN:

    MOV   AX, DATA

    MOV   DS, AX

    MOV   AH, 0EH

    MOV   BH, 0

F_I:MOV   BL, 0

F_J:MOV   AL, '*'

    INT   10H

    INC   BL

    CMP   BL, J

    JB    F_J

    INC   J

    INC   J

    MOV   AL, 13

    INT   10H

    MOV   AL, 10

    INT   10H

    INC   BH

    CMP   BH, I

    JB    F_I

    MOV   AH, 4CH

    INT   21H

CODE  ENDS

    END   MAIN


程序执行后,显示如下:


C:\MASM6.15>MM

********

**********

************

**************

****************

******************

********************

**********************

************************

**************************

****************************

******************************

********************************

**********************************

************************************

**************************************

****************************************

******************************************

********************************************

**********************************************

************************************************

**************************************************

****************************************************


C:\MASM6.15>


做而论道编写的是一个可以灵活修改的程序,如果把前面数据段中的:


    I  DB  23     ;行数

    J  DB  8      ;首行字符数


其中的数字,分别改为 3 和 1,就可以输出题目要求的:


*

***

*****


另外,有个关键问题:


做而论道当时使用的编译软件是 MASM 5.10,编程时,数据段和代码段名称,可以写成 D 和 C。


而提问者使用的编译软件是 MASM 6.15,编译时,它就把 C、D 当成了错误。


经过提问者的追问,才发现了编译软件的差异。


简单修改一下,把段名称 C、D 改成了 CODE、DATA,再用 MASM 6.15 来编译,就没有错误了。


本博文发表出来程序,就是可以使用两种版本的软件来编译的,它们都不会提示错误。


因为提问者使用的软件版本的问题,使得本程序和采纳答案失之交臂。


大家可以去看看采纳答案中写的程序,比做而论道写的,要罗嗦多了,变量用的也多。


0 0
原创粉丝点击