CSC231 Homework 2

From dftwiki3
Revision as of 22:46, 17 September 2008 by Thiebaut (talk | contribs) (Problem #2)
Jump to: navigation, search

<meta name="keywords" content="computer science, assembly language, pentium, exercise, machine language, intel" /> <meta name="description" content="Dominique Thiebaut's Web Page" /> <meta name="title" content="Dominique Thiebaut -- Computer Science" /> <meta name="abstract" content="Dominique Thiebaut's Computer Science Web pages" /> <meta name="author" content="thiebaut at cs.smith.edu" /> <meta name="distribution" content="Global" /> <meta name="revisit-after" content="10 days" /> <meta name="copyright" content="(c) D. Thiebaut 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008" /> <meta name="robots" content="FOLLOW,INDEX" />

Back to CSC231 Main Page


Assignment #2

This assignment is due on Wednesday, Sept 24th, at 11:59 p.m. plus 1 minute.

Problem #1

Write a program that displays the following pattern using loops.

**********#
 *********##
  ********###
   *******####
    ******#####
     *****######
      ****#######
       ***########
        **#########
         *##########
        **#########
       ***########
      ****#######
     *****######
    ******#####
   *******####
  ********###
 *********##
**********#

Requirements: your program cannot contain more than 5 int 0x80 instructions!

Store your program in a file called hw2a.asm and submit it as follows:

  submit hw2 hw2a.asm

Problem #2

For this problem you have to debug the executable version of a program and answer two questions.

  • You can get the executable version of the program by using this command, from your Linux account:
   cp ~thiebaut/public_html/classes/231/hw2 .

(don't forget the dot at the end of the line!)

If you are working off-campus, and you have a linux machine where the utility wget is installed, try this:

   wget http://cs.smith.edu/~thiebaut/classes/231/hw2

and you should get a copy of the program.

Of course, you can just click on the link and get the executable!

  • Once you're done transfering the program, debug it:
   ddd hw2 &
  • Because you do not have the source file, the .asm program, ddd will disassemble the beginning of the program for you, and will show something like this:
Dump of assembler code for function _start:
    0x08048080 <_start+0>:  nop
    0x08048081 <_start+1>:  nop    
    0x08048082 <_start+2>:  mov    $0x80490c0,%esi
    0x08048087 <_start+7>:  mov    $0x80490de,%edi
    0x0804808c <_start+12>: mov    $0x10,%ecx
End of assembler dump.

Right click on the address of the second nop, and set a breakpoint. A little red STOP sign should appear on this line.

  • Then run the program by clicking on the Run button of the floating toolbar (or by pressing F2).
  • Then it's a matter of clicking Stepi and gather the information you need to answer the questions below.

Question 1

What string of characters is contained in the array that occupies the first 31 bytes of data memory when the processor has reached the 3rd NOP instruction of the program?

Question 2

What hexadecimal values are stored in the registers eax, ebx, ecx, and edx when the processor has reached the 3rd NOP instruction of the program?

Write your answers in a file called hw2.txt and submit your file as follows:

  submit hw2 hw2.txt