Difference between revisions of "CSC231 Homework 2 2014"
(→Problem 1) |
(→Preparation) |
||
Line 73: | Line 73: | ||
* '''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. | * '''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. | * '''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: | + | * Assemble, link, and run the programs as follows (user input in boldface): |
<br /> | <br /> | ||
− | nasm -f elf IOskel.asm | + | '''nasm -f elf IOskel.asm''' |
− | nasm -f elf 231Lib.asm ''(once you have assembled it, you don't need to repeat this step)'' | + | '''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 | + | '''ld -melf_i386 -o IOskel IOskel.o 231Lib.o''' |
− | ./IOskel | + | '''./IOskel''' |
> | > | ||
Line 86: | Line 86: | ||
<br /> | <br /> | ||
− | > 22334 | + | > '''22334''' |
x = 22334 | x = 22334 |
Revision as of 08:56, 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 (user input in boldface):
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