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
Dealerships are awarded the rebate
: Dealerships are awarded the rebate on a quarter-by-quarter basis, only for quarters where their actual sales exceeded expected volumes for that quarter. Expected sales volumes for each quarter are as follows:
|
B+-tree
: For the B+-tree where M=3 and L=5 shown below, show how an insert of value 80 is handled.
|
Encryrption of some unknown
: Assume (A1,B1) is an encryrption of some unknown m1. Prove that (A1,B2g^(m2) mod p) is a valid encryption of m1 + m2 mod p. More generally, if (A2,B2) is an encryption of m2, what is (A1A2 mod p,B1B2 mod p) an encryption of?
|
Problem resolution in an organization.
: In a one to two page (two page double-spaced maximum) paper explain why information systems today are currently effective or ineffective in assisting with problem resolution in an organization.
|
Design a calculator in assembly
: 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.
|
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.
|