汇编语言实现简单的计算器运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言实现简单的计算器运算

DA TAS SEGMENT

x dw 0

op db 0

DIV ARRAY dw 10000,1000,100,10,1

DA TAS ENDS

stack segment

db 100 dup(?)

stack ends

CODES SEGMENT

ASSUME CS:CODES,DS:DA TAS,ss:stack START:

MOV AX,DATAS

MOV DS,AX

next:

call do_cal ;输入第一个表达式如:5+3=

call show ;输出表达式结果

mov dl,0dh

mov ah,02h

int 21h

mov dl,0ah

mov ah,02h

int 21h ;回车换行

jmp next ;跳回输入第二个表达式

do_cal: ;输入表达式

call input ;输入数

cmp al,'e'

jz exit

MOV OP,AL

CMP OP,'+'

jnz next1

call do_add

jmp next5

next1:

CMP OP,'-'

JNZ NEXT2

CALL DO_SUB

JMP NEXT5

NEXT2:

CMP OP,'*'

JNZ NEXT3

CALL DO_MUL

JMP NEXT5

NEXT3:

CMP OP,'/'

JNZ NEXT4

CALL DO_DIV

jmp next5

NEXT4:

cmp op,'='

call show

next5:ret ;判断运算符input: ;输入数字xor bx,bx

mov cx,10

skip: MOV AH,1

INT 21H

cmp al,'0'

jl skip1

cmp al,'9'

jg skip1

push ax

mov ax,bx

mul cx

mov bx,ax

pop ax

and al,0fh

xor ah,ah

add bx,ax

jmp skip

skip1:ret

do_add: ;加法

mov x,bx

call input ;输入第二个数

add bx,x

ret

do_sub: ;减法

mov x,bx

call input ;输入第二个数

sub x,bx

mov bx,x

ret

do_mul: ;乘法

mov x,bx

call input ;输入第二个数

mov ax,bx

mul x

mov bx,ax

ret

do_div: ;除法

mov x,bx

xor dx,dx

call input ;输入第二个数

mov ax,x

cwd

div bx

mov bx,ax

ret

show: ;显示输出

MOV CX,5

MOV AX,bx

MOV SI,OFFSET DIV ARRAY LP1: mov dx,0

DIV WORD PTR [SI]

PUSH DX

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

add si,2

POP AX

LOOP LP1

ret

exit: MOV AH,4CH

INT 21H

CODES ENDS

END START

相关文档
最新文档