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

📄 10详细说明.txt

📁 汇编 语言实现简单计算
💻 TXT
字号:
DATA       SEGMENT
S          DB 0DH,0AH,'PLEASE INPUT A NUMBER: ',0AH,0DH,'$'
H          DB 0DH,0AH,'PLEASE INPUT A OPERATER: ',0AH,0DH,'$'
p          db 0dh,0ah,'please output the result: ',0ah,0dh,'$'
RESULT     DB    5 DUP(?),'$'          ;结果的存放地
X          DB    6,0,6 DUP(?)          
I          EQU   $-X-3                 ;输入缓冲区的字符串的长度
R1         DB    5 DUP(?),'$'          ;操作数1的存放地
R2         DB    5 DUP(?),'$'          ;操作数2的存放地
DATA       ENDS

CODE1       SEGMENT
         ASSUME DS:DATA,CS:CODE1
START:   MOV AX,DATA
         MOV DS,AX
         
         CALL FAR PTR DTOBIN           ;将第一个操作数转换并放到r1中
         MOV WORD PTR R1,AX 
         
         MOV DX,OFFSET H               ;输入运算符
         MOV AH,9
         INT 21H 
         MOV AH,1
         INT 21H 
         
         push ax                       ;把运算符入栈
         
         CALL FAR PTR DTOBIN           ;将第二个操作数转换并放到r2中
         MOV WORD PTR R2,AX
         
          pop ax                       ;运算符出栈
                                       
         MOV BH,AL                     ;判断运算符,并选择相应的操作
         CMP BH,'-'
         JZ  SUB1
         CMP BH,'+'
         JZ  ADD1
         CMP BH,'*'
         JZ  MUL1
         CMP BH,'/'
         JZ  DIV1

SUB1:    MOV AX,WORD PTR R1
         SUB AX,WORD PTR R2
         CALL FAR PTR BTOASC      ;把结果转换为十进制,并放到result中
         JMP EXIT
ADD1:    MOV AX,WORD PTR R1
         ADD AX,WORD PTR R2
         CALL FAR PTR BTOASC
         JMP EXIT
MUL1:    MOV DX,0
         MOV AX,WORD PTR R1
         MUL R2
         PUSH AX
         MOV AX,DX
         CALL FAR PTR BTOASC
         POP AX
         CALL FAR PTR BTOASC
         JMP EXIT
DIV1:    MOV DX,0
         MOV AX,WORD PTR R1
         DIV  WORD PTR R2
         CALL  FAR PTR  BTOASC
                  
exit:    mov dx,offset p             ;输出结果的小程序段
         MOV AH,9H
         INT 21H     
         MOV DX,OFFSET RESULT
         MOV AH,9H
         INT 21H                     
        
         MOV DX,OFFSET H           ;判断程序是否结束,输入y结束,其他字符进行下一次计算
         MOV AH,9
         INT 21H 
         MOV AH,1
         INT 21H                      
         cmp al,'y'
         jz  quit
         jmp start

quit:     MOV AH,4CH
          INT 21H
CODE1     ENDS

CODE2     SEGMENT 
         ASSUME CS:CODE2

DTOBIN   PROC FAR                 ;将无符号的十进制数转换为二进制数
         MOV DX,OFFSET S          ;入口参数:x的首地址+2
         MOV AH,09H               
         INT 21H
         MOV DX,OFFSET X
         MOV AH,0AH
         INT 21H
         MOV DL,0AH
         MOV AH,2
         INT 21H
         MOV DL,0DH
         MOV AH,2
         INT 21H
         MOV CX,I 
         MOV DI,OFFSET X+2
         XOR AX,AX
DTOBIN1: MOV DX,10
         MUL DX
         MOV DL,[DI]
         INC DI
         AND DL,0FH
         XOR DH,DH
         ADD AX,DX                ;出口参数:AX=转换得到的二进制数
         LOOP DTOBIN1
          RET 
DTOBIN   ENDP

BTOASC   PROC FAR                ;将无符号的二进制数转换为十制数
         PUSH AX                 ;入口参数:AX=欲转换的二进制数  
         PUSH CX                 ;出口参数:十进制数的ASCII串放在result中
         PUSH DX
         PUSH SI
         LEA DI,RESULT+4       
         MOV  CX,10
         MOV  SI,5
BTOASC1: XOR DX,DX
         DIV CX
         DEC SI
         ADD DL,30H
         MOV [DI],DL
         DEC DI
         OR  SI,SI
         JNZ BTOASC1
         POP SI
         POP DX
         POP CX
         POP AX
         RET 
BTOASC   ENDP
CODE2    ENDS
         
         END START


此程序的相应的执行操作:

PLEASE INPUT A NUMBER:
12345

PLEASE INPUT A OPERATER:
+
PLEASE INPUT A NUMBER:
34567

please output the result:
46912

PLEASE INPUT A OPERATER:
n

PLEASE INPUT A NUMBER:
78968

PLEASE INPUT A OPERATER:
-
PLEASE INPUT A NUMBER:
23456

please output the result:
55512

PLEASE INPUT A OPERATER:
n

PLEASE INPUT A NUMBER:
00120

PLEASE INPUT A OPERATER:
*
PLEASE INPUT A NUMBER:
00050

please output the result:
06000

PLEASE INPUT A OPERATER:
n

PLEASE INPUT A NUMBER:
09000

PLEASE INPUT A OPERATER:
/
PLEASE INPUT A NUMBER:
00009

please output the result:
01000

PLEASE INPUT A OPERATER:
y
E:\MASM>

⌨️ 快捷键说明

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