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

有一个编程的题目,要求输出的是:

*
***
*****

题目链接:百度安全验证

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

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

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>

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

DATA SEGMENT
    I  DB  23     ;行数
    J  DB  8      ;首行字符数
DATA ENDS

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

*
***
*****


另外,还有个重要问题!

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

而提问者使用的编译软件是 MASM 6.15,编译时,它就把 C、D 当成了错误
经过提问者的追问,才发现了编译软件的差异。

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

本博文现在发表出来程序,就是可以使用两种版本的软件来编译的,它们都不会提示错误。
因为提问者使用的软件版本的问题,使得本程序和采纳答案失之交臂。
大家可以去看看采纳答案中写的程序,比做而论道写的,要啰嗦多了,变量用的也多。

 

--本文完--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值