The MASM Forum

General => The Campus => Topic started by: jj2007 on July 15, 2019, 07:44:53 PM

Title: Challenge: Print 0 ... 100 without loop or recursion
Post by: jj2007 on July 15, 2019, 07:44:53 PM
A simple challenge for the newcomers: Print the numbers from 0 ... 100 without using a loop and without recursion. Here is a template to get you started:

include \masm32\include\masm32rt.inc

.code
start: mov ecx, 0
; .Repeat ; sorry, looping is not allowed!!!
print str$(ecx), " " ; this prints just one "0" followed by a blank
; .Until 0

MsgBox 0, "That was perfect!!", "Success:", MB_OK
exit
end start


@José: That one is not meant for you :badgrin:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: HSE on July 15, 2019, 10:40:20 PM
I have not problem to wait newcomers' solutions! (because I don't have idea  :biggrin:)
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: mabdelouahab on July 16, 2019, 01:44:25 AM

include \masm32\include\masm32rt.inc

.code
start: mov ecx, 0
; .Repeat ; sorry, looping is not allowed!!!
print str$(0), "." ; this prints just one "0"
print str$(1), "." ; this prints just one "1"
print str$(2), "." ; this prints just one "2"
...
print str$(100), " " ; this prints just one "100" followed by a blank
; .Until 0

MsgBox 0, "That was perfect!!", "Success:", MB_OK
exit
end start

:biggrin:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: jj2007 on July 16, 2019, 01:54:11 AM
include \masm32\include\masm32rt.inc

.code
start: print "0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99"
MsgBox 0, "THAT was perfect!! (but you were pretty close, mabdelouahab)", "Success:", MB_OK
exit
end start
:badgrin:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: aw27 on July 16, 2019, 04:02:07 AM
Very good JJ  :thumbsup:

Even better, from 0 to 1000:


.model flat, stdcall

includelib msvcrt.lib
printf proto C :ptr, :vararg

.data
nums label dword
counter=0
WHILE counter LE 1000
db "%d "
counter = counter +1
ENDM
db 0
oldesp dword 0
align 16
stacked dd 1000h dup (0)
stacker label dword

counter=0
WHILE counter LE 1000
DWORD counter
counter = counter +1
ENDM

.code

main proc
mov oldesp, esp
mov esp, offset stacker
invoke printf, offset nums
mov esp, oldesp
ret
main endp

end

Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: daydreamer on July 16, 2019, 04:40:59 AM
I was thinking I am a student that just learned about boolean NOT,AND,OR,XOR and binary numbers
cout << "000 001 010 011 100";
:greenclp:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: hutch-- on July 16, 2019, 04:48:32 AM
What's the challenge ?

print 1
print 2
print 3
  ........
print 99
print 100

You guys must be bored.
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: jj2007 on July 16, 2019, 07:53:44 AM
Quote from: AW on July 16, 2019, 04:02:07 AM
Very good JJ  :thumbsup:

Thanks :badgrin:

(but your WHILE counter LE 1000 is cheating - that's a loop  :smiley:)

Quote from: hutch-- on July 16, 2019, 04:48:32 AM
You guys must be bored.

Yep, that explains it all :thumbsup:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: morgot on July 16, 2019, 08:48:32 AM
Can I use jmp cmp?
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: jj2007 on July 16, 2019, 09:41:03 AM
Yes, Morgot. If it doesn't provide a loop, of course ;-)
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: aw27 on July 16, 2019, 01:25:34 PM
Quote from: jj2007 on July 16, 2019, 07:53:44 AM
[(but your WHILE counter LE 1000 is cheating - that's a loop  :smiley:)

It is exactly the same as this:

Quote from: jj2007 on July 16, 2019, 01:54:11 AM
.code
start:   print "0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99"

Write number, space, write number, space, write number, space,...   . A boring loop done by hand  :skrewy:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: hutch-- on July 16, 2019, 01:30:07 PM
Jose,

Where is the 100 ?  :biggrin:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: aw27 on July 16, 2019, 01:52:44 PM
Quote from: hutch-- on July 16, 2019, 01:30:07 PM
Where is the 100 ?  :biggrin:
So, the code contains a bug too.   :badgrin:
Title: Re: Challenge: Print 0 ... 100 without loop or recursion
Post by: morgot on July 16, 2019, 09:00:03 PM
Quote from: jj2007 on July 16, 2019, 09:41:03 AM
Yes, Morgot. If it doesn't provide a loop, of course ;-)
Ah, I thought only without a 'loop' operator .. (but with jmp LABEL, cmp.)
Then I don't know how. If without recursion.