Difference between revisions of "CSC231 Loop Exercises"

From dftwiki3
Jump to: navigation, search
Line 60: Line 60:
 
<br />
 
<br />
 
<onlydft>
 
<onlydft>
==Solution 1=
+
==Solution 1==
 
<source lang="asm">
 
<source lang="asm">
 
; print all ints between 1 and 100, one per line.
 
; print all ints between 1 and 100, one per line.
Line 92: Line 92:
 
</source>
 
</source>
  
=Solution 2=
+
==Solution 2==
 
<source lang="asm">
 
<source lang="asm">
 
;;; loop2.asm
 
;;; loop2.asm
Line 170: Line 170:
 
call print_int
 
call print_int
 
 
 +
        ret
 +
 +
</source>
 +
==Solution 4==
 +
<source lang="asm">
 +
;;; loop4.asm
 +
;;; same as loop1.asm, but prints the
 +
;;; numbers 10 per line.
 +
 +
 +
%include "asm_io.inc"
 +
 +
        ;; -------------------------
 +
        ;; data segment
 +
        ;; -------------------------
 +
        section .data
 +
space db " ", 0
 +
 +
        ;; -------------------------
 +
        ;; code area
 +
        ;; -------------------------
 +
        section .text
 +
        global  asm_main
 +
 +
asm_main:
 +
;;; n = 1
 +
;;; for i in range( 1, 11 ): # loops 10 times
 +
;;;    for j in range( 1, 11 ): # loops 10 times
 +
;;;     print( n, end=" " )
 +
;;;     n += 1
 +
;;;    print()
 +
;;;
 +
 +
 +
;;; n = 1
 +
mov eax, 1
 +
 +
mov ecx, 10
 +
 +
for1: mov edx, ecx ; save ecx of loop1
 +
 +
mov ecx, 10
 +
 +
for2: call print_int ; print n
 +
mov ebx, eax ; save n
 +
 +
mov eax, space ; print space
 +
call print_string
 +
mov eax, ebx ; restore n
 +
inc eax ; n <- n+1
 +
 +
loop for2
 +
 +
call print_nl
 +
 +
mov ecx, edx
 +
loop for1
 +
 +
call print_nl
 
         ret
 
         ret
  

Revision as of 08:45, 12 October 2012

--D. Thiebaut 11:21, 20 October 2010 (UTC)


Exercise 1

Write a loop using the LOOP instruction that prints all the numbers from 1 to 100, one per line

Exercise 2

Modify the loop so that it sums up all the numbers from 1 to 100 and prints the sum at the end.

Exercise 3

Modify the loop so that it prints all the numbers from n1 to n2, where n1 and n2 are dword variables.

Exercise 4

Modify exercise 1 so that the program prints the numbers 10 per line.

1 2 3 4 5 6 7 8 9 10
11 12 13 14...     20
21 22 23...          30
...
91 92 93 94...   100

Exercise 5

Review. Write a simple program that prints a line of 30 stars

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

Exercise 6

Using a loop, write a simple program that prints 30 lines of stars, such that the first line contains 30 stars, the next one 29 stars, then 28 stars, until the last line printed contains only 1 star.

******************************
*****************************
****************************
***************************
**************************
*************************
************************
***********************
**********************
*********************
.
.
.
***
**
*

Exercise 7

Same exercise, but this time the first line printed contains 1 star, the next 2 stars, and so on until the last one, which contains 30 stars.







...