zoukankan      html  css  js  c++  java
  • 汇编 二则运算

         上次写到可输入的两位数相加,这次,为了让运算更加灵活,可以进行加减运算。思路就是读取数字,当数字中断时判断符号为加号还是减号。再继续读取,然后运算时与两位数相加通过原理。减时用SUB一下即可。

        

    DATAS SEGMENT
    	OP1 DW 0
    	OP2 DW 0
    	OPERATOR DB ?
    	RESULT DB 10 DUP (?)
    	BUFSIZE DB 25
    	ACTCHAR DB ?
    	CHARTEXT DB 26 DUP ('$')
          
    DATAS ENDS
    
    STACKS SEGMENT
        
    STACKS ENDS
    
    CODES SEGMENT
        ASSUME CS:CODES,DS:DATAS,SS:STACKS
    START:
        MOV AX,DATAS
        MOV DS,AX
        MOV DX,OFFSET BUFSIZE
        MOV AH,0AH
        INT 21H 
        MOV SI,OFFSET CHARTEXT
        
    SS1:MOV CL,[SI]
        CMP CL,30H
        JB  GETCODE	;跳转到ss6,此步为运算符号
        CMP CL,39H
        JA  GETCODE
        SUB CL,30H
        CBW
        MOV AX,OP1
        MOV BX,10
        MUL BX
        ADD AX,CX
        MOV OP1,AX
        INC SI
        JMP SS1
        
    GETCODE:MOV BL,[SI]			;把运算符号赋给BL
    	MOV OPERATOR,BL	
    	JMP SS2
         
    SS2:
    	INC SI    
        MOV CL,[SI]
        CMP CL,30H
        JB  SS6
        CMP CL,39H
    JA  SS6		;跳转到ss6,读取接下来的数字
        SUB CL,30H
        CBW
        MOV AX,OP2
        MOV BX,10
        MUL BX
        ADD AX,CX
        MOV OP2,AX
        JMP SS2
        
    SS6: 
    CMP OPERATOR,2DH
    	 JZ OPENJIAN			;若为减号,跳转到jian
    	 JNZ OPENJIA			;若为加号,跳转到jia
    	 
    
    OPENJIAN: CALL JIAN
    		JMP SS11			;正常退出
    
    OPENJIA: CALL JIA 
     		JMP SS11			;正常退出
    
    JIA PROC	    
    SS3:
    	MOV DL,10
        MOV AH,2
        INT 21H
        
        MOV AX,OP1
        ADD AX,OP2 
        MOV BX,0 
        MOV CL,10
        
    SS4:DIV CL    
        ADD AH,30H 
        MOV SI, OFFSET RESULT
        MOV [SI+BX],AH 
        INC BX 
        CBW 
        CMP AL,0
        JNZ SS4 
        
    SS5:DEC BX 
        MOV DL,[SI+BX]
        MOV AH,2
        INT 21H 
        CMP BX,0
        JNZ SS5 
        
      RET
    JIA ENDP
    
    
    JIAN PROC 
    	    
    SS7:
    	
    	MOV DL,10
        MOV AH,2
        INT 21H
        
        MOV AX,OP1
        SUB AX,OP2 
        MOV BX,0 
        MOV CL,10
        
    SS8:DIV CL    
        ADD AH,30H 
        MOV SI, OFFSET RESULT
        MOV [SI+BX],AH 
        INC BX 
        CBW 
        CMP AL,0
        JNZ SS8 
        
    SS9:DEC BX 
        MOV DL,[SI+BX]
        MOV AH,2
        INT 21H
        CMP BX,0
        JNZ SS9 
        RET
    JIAN ENDP
    
    SS11:    MOV AH,4CH
        INT 21H
    CODES ENDS
        END START
    
    
    
    


            其实入门就入到这里而已,接下来的是与硬件结合的东西,个人不是太有兴趣,还是专心学自己的东西,不过,这门东西还是有用,至少让你知道很原始的东西,所以刚开始感觉很难写。因为底层,所以黑客和大牛们都是用这个,这个可以有。

  • 相关阅读:
    转Oracle、MySql、SQLServer 数据分页查询
    转 DevExpress-ASPxPageControl 动态添加 TabPage 内容
    淘淘实惠多www.taohuiduo.com-专注独家折扣、1折特卖、9块9包邮、全场包邮
    "命名空间"system.web"中不存在类型或命名空间名称security"错误解决方法
    转摘 Eclipse智能提示及快捷键
    转(C#)Winform中MD5加密
    ComboBoxEdit数据绑定
    格式化日期和时间
    时间格式转换
    如何安装ESXi的补丁
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3241168.html
Copyright © 2011-2022 走看看