⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exp3.asm

📁 汇编实验,用汇编语言实现一些简单操作,包括文件读写
💻 ASM
字号:
DATA SEGMENT 
RESULT DW 0
NONUM DB 0
FLAG DB 0 ;INSTRUCT WHETHER OR NOT TO CAL
NEWLINE DB 0AH,0DH,'$'
ERRORMSG DB 0AH,0DH,'ERROR:INVALID EXPRESSION',0AH,0DH,'$'
INPUTMSG DB 'INPUT THE EXPRESSION(END WITH #):$'
DATA ENDS 
STACK SEGMENT PARA STACK'STACK'
	DB 100 DUP(0)
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA,SS:STACK   ;LINE 10
START:  MOV AX,STACK
	MOV SS,AX
	MOV AX,DATA
	MOV DS,AX
	MOV DX,OFFSET INPUTMSG 
	MOV AH,9 ;TO OUPUT A STRING BEGIN WITH DX        ;50
	INT 21H
MAINLOP:XOR BX,BX
	MOV AH,1
	INT 21H
	MOV BL,AL
	CMP BL,'#';END OF THE EXPRESSION
	JE ENDEXP                        ;LINE 20
	CMP BL,'+'
	JE OPERATOR
	CMP BL,'-'
	JE OPERATOR
	CMP BL,'*'
	JE OPERATOR
	CMP BL,'/'
	JE OPERATOR
	CMP BL,'('
	JE INSIDE                       ;LINE 30
	CMP BL,')'
	JE OUTSIDE
	CMP BL,'0'
	JB ERROR
	CMP BL,'9'
	JA ERROR
	AND BL,0FH ; IT IS A NUM
CONCAL:	INC FLAG                         ;38
	CMP FLAG,2
	JE CAL                            ;40
	PUSH BX
	JMP MAINLOP
OPERATOR:PUSH BX ;PHSH THE OPERATOR IN THE STACK
	 JMP MAINLOP
INSIDE: DEC FLAG
	JMP MAINLOP
OUTSIDE:
	POP BX
	JMP CONCAL
ERROR:  MOV DX,OFFSET ERRORMSG 
	MOV AH,9 ;TO OUPUT A STRING BEGIN WITH DX        ;50
	INT 21H
	MOV AH,4CH
	INT 21H
ENDEXP: 
	MOV DX,OFFSET NEWLINE
	MOV AH,9
	INT 21H
	POP BX
	MOV RESULT,BX
	MOV CL,4 ;SHIFT NUM                 60
	MOV CH,4 ;LOOP NUM
SHOW:	MOV DL,BH
	SHR DL,CL ;
	SHL BX,CL
	CMP DL,9
	JLE DIRECT
	ADD DL,7
DIRECT: ADD DL,'0'
	MOV AH,2
	INT 21H                             ;70
	DEC CH
	JNE SHOW
	MOV AH,4CH
	INT 21H
CAL:    POP CX ;//DI IS AN OPERATOR
	POP SI ;THE RESULT
	CMP CL,'+'                    ;77
	JE PLUSCAL                           ;
	CMP CL,'-'
	JE SUBCAL
	CMP CL,'*'
	JE TIMESCAL
	CMP CL,'/'
	JE DIVCAL
AFTER:  DEC FLAG
	PUSH SI
	JMP MAINLOP
PLUSCAL:ADD SI,BX
	JMP AFTER
SUBCAL: SUB SI,BX
	JMP AFTER
TIMESCAL:PUSH AX
	 MOV AX,SI
	 MUL BX
	 MOV SI,AX
	 POP AX
         JMP AFTER
DIVCAL: PUSH DX
	PUSH AX
	XOR DX,DX
	MOV AX,SI
	DIV BX
	MOV SI,AX
	POP AX
	POP DX
	JMP AFTER
CODE ENDS
	END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -