Difference between revisions of "CSC231 Homework 2 2014"
(→Problem 1) |
(→Problem 1) |
||
Line 5: | Line 5: | ||
</bluebox> | </bluebox> | ||
<br /> | <br /> | ||
− | = | + | =Preparation= |
<br /> | <br /> | ||
* 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: |
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.
Preparation
- 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