CSC231 Homework 7 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. Make sure that your Hw7_1.asm program does not contain a _start label, otherwise the linker will be confused when it finds two global labels with the same name in your program and in the test program.
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