文档详情

算术运算程序设计.doc

发布:2017-06-18约1.4千字共3页下载文档
文本预览下载声明
dispc macro char mov dl,char mov ah,2 int 21h endm datas segment x db ? y db ? c db ? ;保存运算符 datas ends codes segment assume cs:codes,ds:datas go: mov ax,datas mov ds,ax ;段填充 l1: call input;接收第1个数 mov x,al;保存第一个数 l2: mov ah,1 int 21h ;接收运算符 cmp al,+ je l3 cmp al,- je l3 cmp al,* je l3 cmp al,/ je l3 call error;如果不是合法的运算符就错误处理 jmp l2 l3: mov c,al ;保存运算符 call input;接收第2个数 mov y,al;保存第一个数 dispc = cmp c,+ jne l5 mov al,x add al,y ;加法运算 l4: aam or ax,3030h push ax dispc ah pop ax dispc al jmp l10 l5: cmp c,- jne l7 mov al,x sub al,y ;减法运算 cmp al,0 jge l6 ;带符号数比较,大于等于时转移 push ax dispc - pop ax neg al ;负数求绝对值 l6: or al,30h dispc al jmp l10 l7: cmp c,* jne l8 mov al,x mul y ;乘法运算 jmp l4 l8: mov al,x xor ah,ah;将AH清0 div y ;除法运算 or ax,3030h mov bx,ax dispc bl ;显示商 cmp bh,0 je l10 mov cx,6 l9: dispc . loop l9 ;显示6个点 dispc bh ;显示余数 l10: dispc 0dh ;回车 dispc 0ah ;换行 jmp l1 input proc ;定义子程序接收数字 l11: mov ah,1 int 21h ;键盘输入并回显 cmp al,1bh ;判断是否为ESC键 jne l12 mov ah,4ch int 21h ;退出 l12: cmp al,0 jae l14 ;若al=0,则跳转 l13: call error;非法数字符则错误处理 jmp l11 l14: cmp al,9 ja l13 and al,0fh;将数字符转换成数值 ret ;子程序返回 input endp error proc dispc 8 ;退格 dispc 20h ;空格 dispc 8 ;退格 ret error endp codes ends end go
显示全部
相似文档