Design a calculator in assembly

Assignment Help Assembly Language
Reference no: EM13162718

Design a calculator in assembly that can handle +,-,/,%, * and expresses errors in the case of division by zero or invalid characters using the template below.

TITLE MASM Template (main.asm)

; Description: Calculator

; Revision date: April 29, 2014

INCLUDE Irvine32.inc

ENTER_KEY = 13

.data

prompt BYTE "Calculator: Enter an expression", 0dh, 0ah, 0

variableA dWord ?

variableB dWord ?

Problem BYTE "You cannot divide by 0",0dh,0ah,0

.code

calc_add PROC USES eax

mov eax, variableB

add variableA, eax

jno done

; display error

done:

ret

calc_add ENDP

calc_sub PROC

ret

calc_sub ENDP

calc_mul PROC

ret

calc_mul ENDP

calc_div PROC

; check divid by zero, remember to use cdq

ret

calc_div ENDP

calc_rem PROC

; check divid by zero, remember to use cdq

ret

calc_rem ENDP

main PROC

call Clrscr

mov ecx, OFFSET prompt

call WriteString ;print out: "Calculator: Enter an expression"

call Crlf ; new line

;read in the first number StateA: ;read in one digit at a time, continue reading until get a sign

mov eax, 0

call ReadChar

call IsDigit ;check to see if the value entered was a digit

jnz Error

sub al, '0'

mov variableA, eax

jmp StateB

StateB:

mov eax, 0

call ReadChar

cmp al, '+'

jnz L1

mov edx, calc_add

jmp StateC

cmp al, '-'

jnz L1:

mov edx, calc_sub

jmp StateC

; fill up the rest three operators

L1:

call IsDigit ;check to see if the value entered was a digit

jnz Error

sub al, '0'

mov ebx, eax

mov eax, 10

imul variableA

jo Error

mov variableA, eax ;

add variableA, ebx ; variableA = variableA * 10 + ebx

jmp StateB

StateC:

; similar to StateA

StateD:

; similar to StateB, except looking for ENTER

mov eax, 0

call ReadChar

cmp al, ENTER_KEY

jz Done

call isDigit

jnz Error

; fill up this part and compute variableB

jmp StateD

Done:

call edx

; display the result reading WriteInt

exit

main ENDP

END main

Reference no: EM13162718

Previous Q& A

  Display the customerid from the orders table

Display the CustomerID from the Orders table and the sum of the associated ItemPrice multiplied by Quantity using Gross Sales (with a space) as the column name from the OrderItems table.

  Display all the lastnames from the customers table

Display all the LastNames from the Customers table and any associated OrdersIDs from the Orders Table. Show the LastName even if they do not have any associated orders. Order the results by LastName in ascending order.

  Distance between nodes u and v

The distance between nodes u and v in graph is the length of the shortest path from u to v. Given a d-dimensional hypercube and a designated source node s, how many nodes are distance i from s, where 0

  Some time on a new parallel computer

You are given some time on a new parallel computer. You run a program which parallelizes perfectly during certain phases, but which must run serially during others.

  Generate by means data.m an array

Generate by measdata.m an array A withsize (365,24), containing temperature measurements for an entire year [1 January,..., 31 December], 24 hours a day [00.00h,...,23.00h].

  Implement a nice graph datastructure

Implement a nice graph datastructure. Implement two different greedy graph coloring algorithms. Shortest path algorithm and MST algorithms.

  The time delay of a long-distance

The time delay of a long-distance call can be determined by multiplying a small fixed constant by the number of communication links on the telephone network between the caller and callee.

  Write a program that reads in a list of integer numbers and

Write a program that reads in a list of integer numbers and print out the sum of all numbers, the average, the lowest and the highest value entered. The first input number indicates how many numbers the program is attempting to read. For example, if ..

  Diagram of a telephone network

Consider a diagram of a telephone network, which is a graph G whose vertices represent switching centers, and whose edges represent communication lines joining pairs of centers. Edges are marked by their bandwidth, and the bandwidth of a path is the ..

  Compute the transmission line utiliza

Consider that packets arrive at an internet router from 3 different other routers, each with Poisson arrivals with l = 4 per second. The packets are all transmitted on the same transmission line

Reviews

Write a Review

 

Similar Q& A

  Integral square root of an input number

Write a short assembly program that computes the integral square root of an input number and In this problem you will write a program that will compute the first 20 numbers in the Fibonacci sequence.

  Write an assembly program

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

  Provide the rtl instructions

Provide the RTL instructions and the time steps that will facilitate the execution of the following assembly language instructions  LDA addr,x  STX addr,x

  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 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)

  Assembly-language program

Write an assembly-language program to add each element of list1 to the corresponding element of list2 and store it in the same location of list2. Use a loop.

  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.

  Problems does an assembler have to overcome

What problems does an assembler have to overcome in order to produce complete binary code with only one pass over the source code? How would code written for a one-pass assembler be different from code written for a two-pass assembler?

  Program for huffman compression/decompression

Write a program for Huffman compression/decompression in assembly language that takes the data from input.txt and writes the output in output.txt.

  Write an assembly language program

Write an assembly language program for encrypting alphabates of a string

  Program in assebly language to solve first degree equations

Create the program on Assebly language which can solve First Degree Equations in form of Ax + B = 0. Coefficients of equation must be entered from keyboard.

  Register address machine

Express the statement X= (A*B)-(C*D)-E in the assembly language of each of 0- memory address machine, 3-register address machine with 3 registers R1,R2,R3, and 2-memory-register-address machine with three registers R1,R2, R3. Your solution should use..

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