Difference between revisions of "CSC231 Homework 2 2014"

From dftwiki3
Jump to: navigation, search
(Created page with "--~~~~ ---- <bluebox> This homework is due on Tuesday, Sept. 30th, at 11:55 p.m. </bluebox> <br /> =Problem 1= <br /> * Create a program called IOskel.asm using your 231a-xx a...")
 
(Problem 1)
Line 9: Line 9:
 
* Create a program called IOskel.asm using your 231a-xx account, on a Linux machine (beowulf2, grendel, or any of the Linux Mint PCs in FH342 or FH345, and copy this code in it:
 
* Create a program called IOskel.asm using your 231a-xx account, on a Linux machine (beowulf2, grendel, or any of the Linux Mint PCs in FH342 or FH345, and copy this code in it:
 
<br />
 
<br />
<source lang="asm">
+
::<source lang="asm">
 
;;; -----------------------------------------------------
 
;;; -----------------------------------------------------
 
;;; IOskel.asm
 
;;; IOskel.asm
Line 66: Line 66:
 
         mov    ebx, 0
 
         mov    ebx, 0
 
         mov    eax, 1
 
         mov    eax, 1
         int    0x80</source>
+
         int    0x80
 +
 
 
</source>
 
</source>
 
<br />
 
<br />
 +
* Also create another program called 231Lib.asm, and copy the code found on [[CSC231_Printing_%26_Inputting_Decimal_Numbers_in_Assembly#231Lib.asm | this page]] in it.
 +
* '''231Lib.asm''' is a library of functions that will be useful for this assignment.  You do not, and should not have to modify the code in this program.
 +
* '''IOskel.asm''' is a skeleton which you will have to copy into new assembly programs, which you will edit to solve various problems.
 +
* Assemble, link, and run the programs as follows:
 +
<br />
 +
 +
nasm -f elf IOskel.asm
 +
nasm -f elf 231Lib.asm &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''(once you have assembled it, you don't need to repeat this step)''
 +
ld -melf_i386 -o IOskel IOskel.o 231Lib.o
 +
./IOskel
 +
&gt;
 +
 
 +
<br />
 +
* The ">" symbol is a prompt: the program is asking you to input a number.  Just input an integer, and press Enter:
 +
<br />
 +
 +
&gt; 22334
 +
x = 22334

Revision as of 08:55, 21 September 2014

--D. Thiebaut (talk) 09:48, 21 September 2014 (EDT)


This homework is due on Tuesday, Sept. 30th, at 11:55 p.m.


Problem 1


  • Create a program called IOskel.asm using your 231a-xx account, on a Linux machine (beowulf2, grendel, or any of the Linux Mint PCs in FH342 or FH345, and copy this code in it:


;;; -----------------------------------------------------
;;; IOskel.asm
;;; D. Thiebaut
;;; Simple skeleton program illustrating how to get an
;;; integer from the command line and displaying it back
;;;
;;; To assemble, link and run:
;;; nasm -f elf 231Lib.asm
;;; nasm -f elf IOskel.asm
;;; ld -melf_i386 IOskel.o 231Lib.o
;;; ./IOskel
;;; -----------------------------------------------------

;;; extern functions that will be linked to this program
;;; contained in 231Lib.asm

extern  _printDec
extern  _printString
extern  _println
extern  _getInput
        
;;; -----------------------------------------------------
;;; data section
;;; -----------------------------------------------------
        section .data
x       dd      0               ; the integer used for IO
msgX    db      "x = "
prompt  db      "> "
        
;;; -----------------------------------------------------
;;; code section
;;; -----------------------------------------------------
        section .text
        global _start
_start:

;;; get number from user
        mov             ecx, prompt
        mov             edx, 2
        call            _printString
        call            _getInput
        mov             dword[x], eax

        
;;; print "x = dddd" where dddd is the contents of x
;;; in decimal
        mov             ecx, msgX
        mov             edx, 4
        call            _printString
        mov             eax, dword[x]
        call            _printDec
        call            _println

;;; ; exit
        mov     ebx, 0
        mov     eax, 1
        int     0x80


  • Also create another program called 231Lib.asm, and copy the code found on this page in it.
  • 231Lib.asm is a library of functions that will be useful for this assignment. You do not, and should not have to modify the code in this program.
  • IOskel.asm is a skeleton which you will have to copy into new assembly programs, which you will edit to solve various problems.
  • Assemble, link, and run the programs as follows:


nasm -f elf IOskel.asm
nasm -f elf 231Lib.asm       (once you have assembled it, you don't need to repeat this step)
ld -melf_i386 -o IOskel IOskel.o 231Lib.o
./IOskel
>
 


  • The ">" symbol is a prompt: the program is asking you to input a number. Just input an integer, and press Enter:


> 22334
x = 22334