Question
THE PROBLEM: Design and write a program in MASM that will prompt the user to enter an integer value. This integer value will be used
THE PROBLEM: Design and write a program in MASM that will prompt the user to enter an integer value. This integer value will be used by the program to print out a series of right triangles built out of asterisks '*'. Each of the triangles will be printed out one at a time using loops. Each of the triangles should also be between three and nine asterisks high, and the same number across, but in different configurations.
Example:
Input : 3
*
* *
* * *
-
* * *
* *
*
-
*
* *
* * *
-
* * *
* *
*.
What I typed.
org 100h
.model small
.stack 64
.data
;Question the user of the input. input db "Enter the size for the triangles, between 3 to 9, or 0 to quit: $"
size dw ?
.code
main proc mov AX, @data ;move location of data segment into AX mov DS, AX ;DS now points to the data segment prompt: mov AH, 09h ;opcode to print a string lea DX, input ;string to print out int 21h mov AH, 01h ;opcode to read in single charcter input int 21h cmp AL, '0' ;checking to see if user input is '0' to start a quit je exit
sub AL, '0' ;convert user into literal value mov AH, 0 ;may not be required, blacks out top half of AX mov size, AX ;copy of literal vaue into variable size mov CX, AX ;copy value in AX into the count (CX) register ;cx count down mov BX, 1 ;set up BX for star counter loop. call crlf ;call crlf proc for carriage return / new line ;First Triangle lines1: push CX ;store the out (lines) loop mov CX, BX ;the start to print out also moves it stars1: mov AH, 02h ;opcode to print a single charater mov DL, '*' ;charater to print out int 21h loop stars1 ;end stars loop call crlf inc BX ;increment BX for stars loop pop CX ;recover CX for outer lines loop loop lines1 ;call crlf proc call crlf ;call crlf proc for carriage return / new line mov CX, size mov BX, 1 ;reload CX with the size copy for next triangle ;Second Triangle lines2: push CX ;stroe the outer (lines) loop value stars2: mov AH, 02h ;opcode to print a single charater mov DL, '*' ;charater to print out int 21h loop stars2 ;end stars2 loop call crlf ;call crlf proc pop CX ;recover value for outer loop loop lines2 ;end lines loop call crlf ;call crlf proc mov CX, size ;reload CX with copy of size for next triangl mov BX, 1 ;set up BX for star loop ;Third Triangle lines3: push CX ;push copy of CX onto stack for lines loop mov CX, BX ;the number of spaces to print out spaces1: mov AH, 02h ;opcode to print single character mov DL, ' ' ;blank space to print out int 21h loop spaces1 ;end spaces loop pop CX ;recover value into CX for stars loop push CX ;push CX for outer lines loop stars3: mov AH, 02h ;opcode to print a single charater mov DL, '*' ;charater to print out int 21h loop stars3 ;end stars_3 loop call crlf ;call crlf proc inc BX ;add one to BX for next line pop CX ;recover CX four outler lines loop loop lines3 call crlf ;call crlf proc mov CX, size mov BX, 1 ;set up CX with copy of size for next triangl ;Four Triangle lines4: push CX spaces2: mov AH, 02h ;opcode to print single character mov DL, ' ' ;blank space to print out int 21h loop spaces2 ;end spaces loop pop CX ;recover valut into CX for stars loop push CX stars4: mov AH, 02h ;opcode to print a single charater mov DL, '*' ;charater to print out int 21h loop stars4 ;end stars_3 loop call crlf ;call crlf proc pop CX ;recover CX four outler lines loop loop lines4 call crlf exit: mov AX, 4C00h ;opcode to terminate program int 21h main endp
crlf proc mov AH, 02h mov DL, 13 int 21h mov DL, 10 int 21h ret
crlf endp end main
--------------------------------------------------------------------------------
The resolute I get is.
*
**
***
***
**
*
***
**
*
***
**
*
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started