Difference between revisions of "CSC231 Homework 7 2014"
(→Problem #2) |
(→Problem #1) |
||
Line 12: | Line 12: | ||
</bluebox> | </bluebox> | ||
<br /> | <br /> | ||
+ | =Preparation= | ||
+ | <br /> | ||
+ | * You may want to do some reading about the '''NEG''' and '''NOT''' instructions | ||
+ | ** http://home.myfairpoint.net/fbkotler/nasmdocc.html#section-A.4.189 | ||
+ | |||
=Problem #1= | =Problem #1= | ||
<br /> | <br /> | ||
− | * | + | * Use the 231Lib.asm library as inspiration and write a function called '''printInt''' that prints a 32-bit 2-s complement number on the screen. |
* Your function should work similarly to '''printDec''', in that the number to print is '''passed through eax''', and not through the stack! | * Your function should work similarly to '''printDec''', in that the number to print is '''passed through eax''', and not through the stack! | ||
* Your function should '''not modify any of the registers''', including eax. | * Your function should '''not modify any of the registers''', including eax. |
Revision as of 10:43, 11 November 2014
--D. Thiebaut (talk) 10:33, 11 November 2014 (EST)
Page under construction
This assignment is due on 11/18/14, at 11:55 p.m.
Preparation
- You may want to do some reading about the NEG and NOT instructions
Problem #1
- Use the 231Lib.asm library as inspiration and write a function called printInt that prints a 32-bit 2-s complement number on the screen.
- Your function should work similarly to printDec, in that the number to print is passed through eax, and not through the stack!
- Your function should not modify any of the registers, including eax.
- Your function should be made global so that a test program can call it.
- Submit your function in a program called Hw7_1.asm.
Example Test Program
section .text
extern printInt
_start:
mov eax, 0
call printInt ; prints 0
mov eax, 0xff
call printInt ; prints 255
mov eax, -1
call printInt ; prints -1
mov eax, 0xffffffff
call printInt ; prints -1
mov eax, 1
mov ebx, 0
int 0x80
Problem #2
- Write a function called printInt16 that prints a 16-bit 2's complement number on the screen.
- Your function should work similarly to printInt, but the number it prints is the number passed in ax (not eax).
- Your function should not modify any of the registers, including ax or the upper part of eax.
- Your function should be made global so that a test program can call it.
- Submit your function to Moodle in a program called Hw7_2.asm.
Example Test Program
section .text
extern printInt16
_start:
mov ax, 0
call printInt16 ; prints 0
mov ax, 0xff
call printInt16 ; prints 255
mov eax, 0x0000ffff
call printInt16 ; prints -1
mov eax, 0xffff0001
call printInt16 ; prints 1
mov eax, 1
mov ebx, 0
int 0x80