您的位置:首页 > 其它

读入两个数并选择加减法运算将结果输出

2012-08-03 20:08 162 查看
assume cs:code,ds:data

data segment

a db 'input the first number( >=0,<10 )',0dh,0ah,'$'

b db 0dh,0ah,'input the second number( >=0,<10 )',0dh,0ah,'$'

d db 0dh,0ah,'chose the operation',0dh,0ah,'1:add 3:sub',0dh,0ah,'$'

e db 3 dup(0),'$'

f db 0dh,0ah,'the result is: ','$'

data ends

code segment

start:

mov ax,data

MOV ds,ax

mov si,0

lea dx,a ;显示字符串:输入第一个数据

mov ah,9

int 21h

mov ah,1 ;读入第一个数据到e[0]

int 21h

mov e[si],al

lea dx,b ;显示字符串:输入第二个数据

mov ah,9

int 21h

mov ah,1 ;读入第2个数据到e[1]

int 21h

mov e[si+1],al

lea dx,d ;显示字符串:提示操作

mov ah,9

int 21h

mov ah,1 ;读入操作数

int 21h

cmp al,33h ;判断是加还是减

jne jia

jian:

mov al,e[si] ;将存的第一个操作数放到al中

mov ah,e[si+1] ;将存的第2个操作数放到ah中

cmp al,ah

jb ok ;如果第1个数小于第2个数则跳转到ok

sub al,ah

add al,30h

mov e[si+2],al

jmp s1

ok:

sub ah,al

add ah,30h ;因为两个操作数相减就会将将30h减掉如:3(33h)-1(31h)=2,这时就要加上一个30h来转化成assic码值

mov e[si+2],ah

mov bh,'-' ;本段将第1个第二数互换相减并在其前面加上一个负号

mov f[16],bh

s1:

lea dx,f ;换行

mov ah,9

int 21h

lea dx,e

add dx,2

mov ah,9

int 21h

jmp k

jia:

mov al,e[si]

mov ah,e[si+1]

add al,ah

sub al,30h ;将两个assic相加就会多出一个30h所以要减去30h

mov e[si+2],al

lea dx,f ;换行

mov ah,9

int 21h

lea dx,e

add dx,2

mov ah,9

int 21h

k:

mov ah,4ch

int 21h

code ends

end start

浏览(56) 评论 编辑 删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐