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
    
    
    
    


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

  • 相关阅读:
    jQuery选择器
    有关ssh的理解
    前端WEB开发人员
    @antdesign/charts 解决echarts图宽高自适应问题,设置100%宽高显示异常
    npm run lintstaged:js报错
    node版本工具 nvm
    nginx域名隐性(地址栏域名不变)跳转
    mysql本地指定loginpath免密登录(mysql_config_editor的用法)
    Git管理查看自己是从那个分支建的分支(什么时间创建的)
    隐藏java代码中 连接数据库、redis等含密码信息方法【配置文件信息安全加密】
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3241168.html
Copyright © 2011-2022 走看看