Difference between revisions of "CSC231 Homework 2 2014"
(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 | + | 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 ''(once you have assembled it, you don't need to repeat this step)'' | ||
+ | ld -melf_i386 -o IOskel IOskel.o 231Lib.o | ||
+ | ./IOskel | ||
+ | > | ||
+ | |||
+ | <br /> | ||
+ | * The ">" symbol is a prompt: the program is asking you to input a number. Just input an integer, and press Enter: | ||
+ | <br /> | ||
+ | |||
+ | > 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