Build an 8088 assembler

Assignment Help Assembly Language
Reference no: EM1376990

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: EM1376990

Questions Cloud

Discuss how people react to change : Make research on people react to change, both positive and negative. No personal change stories, only organizational about change,
Developing model for gasoline consumption : Automobiles have different fuel economies, and commuters drive different distances to work or school. Assume that a state section of Transportation is interested in analyzing average monthly fuel consumption of commuters in a certain city.
Public managerial economics : As part of my Masters of Public Administration degree event, I had to take a course entitled, Public Managerial Economics.
Secision implementation steps : Explain one management step that is division of an effective decision implementation plan provide an example of how you observed this step in action and comment on effectiveness.
Build an 8088 assembler : 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.
Opinion on american executives : In Japan, a presidential assessment is a quality assessment conducted by an outside consultant. At the conclusion of the assessment,
Define good nutrition : Determine the top five components of a sound fitness program, and what role does each component play in individual fitness and define good nutrition.
Designing the user interface to production application : Assume you are creating the user interface to a production application in which time it takes users to perform a task is a good measure of productivity.
Analyzing category of costs : Gypsy Joe's operates a chain of coffee stores. The firms pays rent of $10,000 per year for each store. Supplies are purchased as required.

Reviews

Write a Review

 

Assembly Language Questions & Answers

  Greatest common divisor of integers-masm assembly language

Must be done in MASM assembly language: Greatest common divisor of two integers is largest integer which will evenly divide both integers. GCD algorithm involves integer division in a loop.

  Design a simple digital clock

Design a simple digital clock

  Write mips assembly program to read two non-negative numbers

Write MIPS assembly program to repeatedly read two non-negative integers and print integer product and quotient without using multiplication and division instructions.

  Write a function in linux assembly

Write a function in Linux assembly

  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.

  Write assembly program print binary representation-integers

Write the assembly program called hw6_ex1, stored in file hw6_ex1.asm. This program must prompt user to enter signed 32-bit integer. Program must print out binary representation of the integer.

  Analog measurements

Prepare an assembly program for the correctly measures the wind direction

  Create a assembly language subroutine

Create a assembly language subroutine MULSUM that takes an array named A containing n bytes of positive numbers, and fills two arrays, array B containing n words and array C containing n long words

  Allot op-codes and add microcode to microprogram

Allot op-codes and add microcode to microprogram of Mic-1 to implement following instructions which are then included with IJVM instruction set.

  Write an assembly language program

Write an assembly language program for encrypting alphabates of a string

  Write assembly program-find right admission price to movie

Write the Assembly program to find correct admission price to movie. Price of admission to a movie is $7 for kids (under 12) and $9 for adults.

  Write an assembly program

Prepare an Assembly program that reads in a number of cents.

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