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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值