【汇编】计算器,支持带括号的四则混合运算

这个程序实现了基于汇编语言的计算器,支持带括号的四则混合运算。用户可以输入类似'1+(9*9+(99-33)/3+(22*34))='的表达式,程序会计算并输出结果。运算结果限制在0~65553之间,且除法结果只取整,不支持小数。程序包含5个主要子程序,用于输入处理、括号运算、结果输出等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写了很久,终于算是小小的完结了。(偷懒,不愿写注释)

本程序的输入格式要求如下例:

1+(9*9+(99-33)/3+(22*34))=

输入完计算机就会给出相应结果

但是结果范围(包括中间每部运算的结果)必需0~65553之间

同时,除法运算结果只能取整,并且不支持小数运算。

 

期望自己通过个人的学习,完成那些不能完成的模块。

 

现在程序主要5个子程序。

 

;----------------------------; 

data segment
    number1 dw  100 dup(?)
    number3 dw  100 dup(?)
    number4 dw  100 dup(?) 
    result dw 0
    c dw 0     
    c1 dw 0  
    c2 dw 0           
    clc1 dw 0
    clc2 dw 0  
    otp dw 0
    Table dw 10000,1000,100,10,1 ;定义输出时要用到的除数

welc  DB 'Welcome to the system',13,10
      DB 'The function of the program is arithmetic calculations',13,10
      DB 'Please enter your formula ....',13,10,13,10,'$'
error1 db ' Error:your input is incorrect!',13,10,'$'
over  db 'Error:The reuslt is overflow!',13,'$'
sexit  db 'The program is lay off....','$'  
  data ends
code segment
    main proc far
assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax     
    lea dx,welc
    mov ah,09h
    int 21h   
start1:mov bx,-1 
    mov si,0    
    mov di,30
    mov cx,0
    mov c,0  
    mov c1,0
    mov c2,0
    call write 
    call loopcount 
    call output
   
exit:
    mov ah,4ch
    int 21h     
                  
;--------------------输出最终结果的子程序
output proc near
    lea si,Table 
    mov c,si
    add c,8
    mov cx,5   
    mov ax,result   
    mov otp,0
outgo: xor dx,dx
    div word ptr [si]   ;除bp值求万位,千位,百位,十位,个位 ;商存在了ax中,余数存在了dx中
    or al,30h           ;转换成ascll码 
    mov bx,dx  ;将dx的值存入bx中,因为下面输出ax值时会改变dx值 
    cmp si,c
    je  outgo2
    cmp o

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值