In this project you will build an 8088 assembler the job

Assignment Help Assembly Language
Reference no: EM13370831

In this project, you will build an 8088 assembler. The job of your assembler is to turn 8088 assembly code (i.e., the 8086 assembly code language) into 8088 machine code that executes in an DOS emulator.

The wiki page lists links to two different DOS emulators. You have been given a paper copy of part of the 8088 data sheet, as well as a variety of links to documentation about the 8088, its ISA, its instruction set, and its execution semantics.

This kind of project is a comprehensive test of the skills and knowledge you obtain throughout the course. It is a replacement for the final exam, and should be approached with the dedication and purpose one would put into studying for a final exam. Even though it replaces the final exam as a course component, there are several due dates throughout the semester. Please be aware of them, as late work is not accepted.

This project is an opportunity for students to demonstrate understanding of a concrete, specific Instruction Set Architecture (ISA) and general CPU organization concepts and design philosophies (CISC vs. RISC), the instruction formats and addressing modes, the data path and fetch-decode-execute cycle, memory addressing, number systems and encodings, a practical and realistic knowledge of C programming, among the other topics listed in the course syllabus.

Students must demonstrate their solution by both submitting their code and demonstrating the software to the instructor.

The instructor believes that students at this point in the CPSC curriculum can and should be able to write a basic assembler using the C programming language. The intent of the project is not for students to write a NASM, AS, or GAS replacement, but rather a simple and functional assembler that does basic assembly of instruction mnemonics into byte values. The core of this assembler should contain file I/O code that tokenizes lines of text (i.e., each line of an assembly source file), maintains a symbol and label table, and then translates these tables into a sequence of bytes that represents each instruction; the sequence should be written to a file containing the binary code and be executable as a 16-bit DOS .COM executable for the x86 platform (hint: see the nasm -hf output and the description of output formats in the NASM documentation, specifically the 'bin'format -- links are on the wiki).

A significant number of early tutorials are dedicated to the C programming language, including standard libraries and functions that students will find useful in doing the file I/O and manipulation of the data representing each instruction. Likewise, students should become comfortable with writing assembly language programs in the x86 language. Students should also be able to use tools like nasm, ndisasm, objdump, and udcli to compare the output of their assembler with standard tools.

Below is a list of anticipated learning outcomes for students, including but not limited to:

- develop fluency with the C language and libraries

- reinforce programming skills from previous CPSC courses

- acquire experience writing real assembly programs

- become familiar with a simple but real computer architecture and machine, complementing the theoretical study of the SPARC and x86 ISAs from class material

- become acquainted with the semantics of a real instruction set and formats

- create an element of a professional portfolio

- develop and reinforce number systems knowledge and translation skills; bit manipulation

- clearly understand the link between constructs expressed at the ISA level and the bit values interpreted by the machine hardware

- develop a foundation of basic parsing concepts

- practice "speaking machine" through the specification of translation routines

- gain understanding of how high-level source constructs like variables and control flow artifacts are represented and interpreted at the machine level

1. This is an individual project. You may not receive help from other students or professionals. You may use any public reference material you wish, including those provided by the instructor. Evidence of collusion will be treated seriously and referred to the official University process for dealing with academic dishonesty. You may not simply re-purpose existing assembler code, or pass input assembly code to an already-existing assembler such as NASM or AS. Your assembler should be of your own design and conception.

2. We will provide an execution harness for executing your assembled program. In other words, you do not have to worry about packaging
your assembled code as an ELF file: the output file should be a flat sequence of bytes (similar to the 'nasm -f bin' output option) and named as a DOS .COM file (e.g., MYPROG.COM). The output programs should run under DOSBOX or FreeDOS.

3. Your work on this project will be assessed at three separate times:

(1) at the midpoint of the semester, as indicated by the deadline above, you must submit a set of valid 8088 assembly programs that forms your test suite. This milestone provides you with an opportunity to practice your knowledge of assembly code, machine instruction formats for a CISC architecture, and get a small portion of the project done. The test suite should contain freshly written programs (i.e., you should not simply resubmit a previous HW assignment answer as a test case). For maximum marks, you should have a significant number test cases
of _significant_ complexity. Each test program should be properly formatted and every line should be commented. The file should begin with a comment describing the rationale for including it in the test suite (i.e., it should document what feature(s) of your assembler this test case is meant to assess). You should write these test cases before you write your assembler. The instructor anticipates that your assembler may not successfully assemble all of your test cases (especially if you create some really complex test cases); that's fine -- your grade for this component is based on the quality and number of test cases, not whether your assembler correctly processes them all.

(2) about 2 weeks before the end of the semester, the submission of the basic core of the assembler code, e.g., something that parses lines of assembly mnemonics and dispatches to the appropriate translation routine for the given instruction. Basically, this codebase should reflect at least the "D" level of work (see the table below). This component is for feedback purposes only; it is not graded as such, but you WILL lose 10% of the points available for this project if you do not submit something that compiles (without warnings) and "works" at the D
level.

(3) during the last week, individual demonstrations to the instructor during tutorial sessions of the full capabilities of your assembler, plus the immediate submission of its code as demo'd (this version of the code is graded per the table below).

Reference no: EM13370831

Questions Cloud

Assessment taskwe are doing a sustainable business : assessment taskwe are doing a sustainable business development report about an australian manufacturing company called
Thoroughly investigate one of the following topic areas and : thoroughly investigate one of the following topic areas and discuss in relation to human resource management.topic 1
Many organizations now use some form of mobile technology : many organizations now use some form of mobile technology for example smart phones laptops and tablets. in this
Ethicseugene wright is cfo of caribbean cruise lines the : ethicseugene wright is cfo of caribbean cruise lines. the company designs and manufactures luxury boats. its near
In this project you will build an 8088 assembler the job : in this project you will build an 8088 assembler. the job of your assembler is to turn 8088 assembly code i.e. the
Create a database design specification enhanced entity : create a database design specification enhanced entity relationship diagram eerd and relational data model rdm from the
Schedulingscheduling is explicitly part of our lives we : schedulingscheduling is explicitly part of our lives. we schedule everything and need to in order to plan our
Snmp securitybullsnmpv1 is the most commonly used version : snmp securitybullsnmpv1 is the most commonly used version of snmp even though it provides little support for security.
Your friend has a small design shop with windows nt 40 : your friend has a small design shop with windows nt 4.0 windows 2000 and windows xp workstations. he has one older

Reviews

Write a Review

Assembly Language Questions & Answers

  Multiply by using shift and add instructions

How does real time PCR work to quantify the initial amount of the DNA template? How should the method be modified to quantify the initial amount of RNA template extracted from tissue or cells?

  Write an arm subroutine which will extract a substring

Write an ARM subroutine which will extract a substring from a string. You will need to use the library routine malloc to allocate memory for the new string. Use the pointers(a1,a2,a3) as stated below for writing ARM PROGRAM

  Document the protocols for passing

You must document the protocols for passing parameters and returning the result to the subroutine and also follow the convertion of saving and restoring registers in the subroutine.

  Marie program that will input a variable number

Develop a MARIE program that will input a variable number of user entered DECimal whole number grades, validating each one (0-100) in a subroutine

  Implement a simple 32 bit calculator program

Operand A  and  Operand B  have to be  signed  32 bit integers. So an operand can be a negative number. For example, if you input is (-1 + 3), it should return 2. Operator  must be one of the characters(' + ', ' - ', ' * ', ' / ', ' % ')

  Decimal floating point number

What decimal floating point number does this IEEE 754 single precision number represent: 0x47C0_E6B7?

  Bios interrupt int 21 to read current system time

Write a program in assembly language which uses BIOS interrupt INT 21 to read current system time and displays it on the top-left corner of the screen.

  Write a sequence of two instructions

Write a sequence of two instructions that copies the inter in 4-7 from the AL registers into bits 0-3 of the Bl register. The upper 4 bits of AL will be cleared as will the upper 4 bits of BL. (Microsoft Assembly Language)

  Nonrecursive factorial

Write a nonrecursive version of the Factorial procedure that uses a loop and Write a short program that interactively tests your Factorial procedure.

  It has three integer parameters, and it is a value-returning

That is, its name is discr , it has three integer parameters, and it is a value-returning procedure.Follow the cdecl protocol and write a short windows32 test-driver program to test the procedure.

  Program that requests n as input

Write a program that requests N as input and computes the left-hand and the right-hand sides of the equation, verifies that they are equal, and displays the result.

  Create simple 8-bit alu using add-subtract-shift functions

Create a simple 8-bit ALU. Requirements:The eight functions that you will implement are: add, subtract, and, or, shift left logical, less than, shift right logical.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd