CSC231 nasmld script
--D. Thiebaut 09:18, 7 November 2012 (EST)
revised --D. Thiebaut (talk) 08:12, 16 September 2014 (EDT)
Version 1
#! /bin/bash
# nasmld
# D. Thiebaut
# assembles and links an assembly program for
# a Pentium processor running Linux
filename=$(basename "$1")
filename="${filename%.*}"
nasm -f elf -F stabs $filename.asm
ld -o $filename -melf_i386 $filename.o
Version 2: more sophisticated
This version stops if nasm or ld return an error.
#! /bin/bash
# nasmld
# D. Thiebaut
# assembles and links an assembly program for
# a Pentium processor running Linux
# display syntax if user forgets
if [ ! -n "$1" ]
then
echo "Usage: `basename $0` progName"
exit 1
fi
# remove the ".asm" part of the filename
filename=$(basename "$1")
filename="${filename%.*}"
# assemble and generate a listing (optional)
nasm -f elf -F stabs $filename.asm -l $filename.lst
# if we get errors, stop
if [ "$?" -ne "0" ]; then
echo "*** Nasm ERROR! ***"
exit
fi
# link
ld -melf_i386 -o $filename $filename.o
# if we get errors, stop
if [ "$?" -ne "0" ]; then
echo "Link ERROR! ***"
exit
fi
# no errors, run the program!
./$filename