现在的位置: 首页 > 综合 > 正文

汇编 二则运算

2013年12月03日 ⁄ 综合 ⁄ 共 1307字 ⁄ 字号 评论关闭

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




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

抱歉!评论已关闭.