-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy path03.asm
115 lines (106 loc) · 1.3 KB
/
03.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
assume cs:code
Calculate segment
db '1.3/1= '
db '2.5+3= '
db '3.9-3= '
db '4.4+5= '
Calculate ends
stack segment
db 16 dup (0)
stack ends
code segment
s1:
mov cl,[bx+3]
sub cl,'-'
add cl,1
loop s2
;减法
mov dl,[bx+4]
sub dl,30h
mov al,[bx]
sub al,30h
sub al,dl
add al,30h
mov [bx+6],al
mov byte ptr [bx+7],'.'
mov al,[bx+2]
mov [bx+8],al
add bx,10h
pop cx
loop s
mov cx,1
loop s0
s2:
;除法
mov dl,[bx+4]
sub dl,30h
mov al,[bx]
sub al,30h
div dl
add al,30h
mov [bx+6],al
mov byte ptr [bx+7],'.'
mov ah,0
mov al,[bx+2]
sub al,30h
div dl
add al,30h
mov [bx+8],al
add bx,10h
pop cx
loop s
mov cx,1
loop s0
;程序入口
start:
mov ax,stack
mov ss,ax
mov sp,16
mov cx,4
mov bx,0
mov ax,Calculate
mov ds,ax
mov ah,0
s:
push cx
mov cl,[bx+3]
sub cl,'+'
add cl,1
loop s1
;加法
mov dl,[bx+4]
sub dl,30h
mov al,[bx]
sub al,30h
add al,dl
add al,30h
mov [bx+6],al
mov byte ptr [bx+7],'.'
mov al,[bx+2]
mov [bx+8],al
add bx,10h
pop cx
loop s
mov cx,1
loop s0
;打印结果
s0:
mov ax,Calculate
mov es,ax
mov bx,0
mov ax,0b878h
mov ds,ax
mov ah,10111b
mov cx,64
s3:
mov al,es:[bx]
mov si,bx
add si,bx
mov [si],al
mov [si+1],ah
inc bx
loop s3
mov ax,4c00h
int 21h
code ends
end start