- [somniumchase] 我一运行就说没有数字 01/01 11:44
- [游客] 为什么啊 08/07 15:36
- [游客] 如果想快一些 就改下面这里 dx值改成1H delay: push ax 04/19 02:53
- [lshhjx] 注释在程序中很重要,楼主不知道吗? 12/08 13:40
- [biaggi] 看不明白,在下還須學習 11/06 08:11
- [游客] 我运行的时候直接显示Unkown filename跳出了- -请问怎么改 06/16 21:44
- [游客] 勿庸置疑,注释是好习惯。与人方便自己方便。 04/12 10:33
- [游客] 老实说,看着真心累呀! 04/07 18:37
- [游客] 很无语,初学者就多看书,不要动不动要别人注释,基础打好了,再自己注释,这样比别人帮你注释好得多 12/17 19:43
- [dgkepu] 初学者:不懂,希望有多点注释带着学习学习! 12/07 20:52
- [游客] windows 7是一个64Bit操作系统,它不兼容DOS,无法识别16Bit系统。重装系统wind 02/28 21:05
- [游客] windows 7是一个64Bit操作系统,它不兼容DOS,无法识别16Bit系统。重装系统wind 02/28 21:05
- [466987333] 你好,高手,我想请教一个问题。 我用的是win7操作系统,32位的,里面没有找masm目录,是不是 12/12 17:30
- [lanfioncc] 那个太高级了。。。我还有点看不懂。。不过谢谢!!! 11/27 11:23
- [yc2010] 实验16中的 table: dw sub1,sub2,sub3,sub4 可不可以改成呢? 09/11 09:08
- [yc2010] mov bl,ah mov bh,0 add bx,bx ----------->这里为 09/07 21:03
- [yc2010] 为什么要add bx,bx呢? 09/07 20:55
- [yc2010] 那是不是像table[bx],ds[bx]....等(内存单元)都是表示一个字节呢? 09/06 21:10
- [masmaster] 杨季文的《80X86汇编语言程序设计教程》 09/01 12:52
- [游客] to masmaster shl左移4位,那al传进来的4,5,6位背景色不就没了. 为什 09/01 11:00
[2010-08-06 21:26] 算法练习:打印100以内素数
;----------------------------------------------------
1 ;title Print winthin 100 prime numbers
2 assume cs:code,ds:data,ss:stack
3 data segment
4 tmp0 db 100 dup (0)
5 tmp1 db 100 dup (0)
6 divisor db 10
7 data ends
8 stack segment stack
9 dw 128 dup (0)
10 stack ends
11
12 code segment
13 start:
14 mov ax,stack
15 mov ss,ax
16 mov sp,256
17 mov ax,data
18 mov ds,ax
19 ;生成一个100以内的奇数序列
20 mov di,offset tmp0
21 mov bx,100
22 mov cx,98
23 L: push bx
24 shr bx,1
25 jnc L1
26 pop bx
27 mov word ptr [di],bx
28 inc di
29 jmp L2
30 L1:
31 pop bx
32 L2:
33 dec bx
34 loop L
35 ;;;;;;;;;;;;;;;;;;;;;;;;;
36 mov si,offset tmp0
37 mov di,offset tmp1
38 xor ax,ax
39 s:
40 mov al,[si]
41 cmp al,0
42 jz ol
43 mov bx,si
44 inc bx
45 s1:
46 push ax
47 cmp byte ptr [bx],0
48 jz s3
49 div byte ptr [bx]
50 cmp ah,0
51 jz s2
52 inc bx
53 pop ax
54 jmp s1
55 s3:
56 mov [di],al
57 inc di
58 inc si
59 jmp s
60 s2:
61 pop ax
62 inc si
63 jmp s
64 ;;;;;;;;;;;;;;;;;;;;;;;;;;
65
66 ol: mov byte ptr [di],2
67 disp: xor ax,ax
68 mov al,[di]
69 cmp al,0
70 jz over
71 cmp al,10
72 ja h
73 mov dl,al
74 call show
75 call kg
76 dec di
77 jmp disp
78 h:
79 div byte ptr ds:divisor
80 mov dl,al
81 mov dh,ah
82 call show
83 mov dl,dh
84 call show
85 call kg
86 dec di
87 jmp disp
88 ;
89 over: mov ah,4ch
90 int 21h
91 ;
92 show proc uses ax dx
93 add dl,30h
94 mov ah,2
95 int 21h
96 ret
97 show endp
98 ;
99 kg proc uses ax dx
100 mov dl,' '
101 mov ah,2
102 int 21h
103 ret
104 kg endp
105 ;
106 code ends
107 end start
;-----------------------------------------------------
心得:由于质数(素数)都为奇数, 因此,先生成一个奇数的数组。然后用一个外循环一个内循环来逐个做除法,检查余数是否为零。都不是零的就是素数, 否则, 就不是素数。
1 ;title Print winthin 100 prime numbers
2 assume cs:code,ds:data,ss:stack
3 data segment
4 tmp0 db 100 dup (0)
5 tmp1 db 100 dup (0)
6 divisor db 10
7 data ends
8 stack segment stack
9 dw 128 dup (0)
10 stack ends
11
12 code segment
13 start:
14 mov ax,stack
15 mov ss,ax
16 mov sp,256
17 mov ax,data
18 mov ds,ax
19 ;生成一个100以内的奇数序列
20 mov di,offset tmp0
21 mov bx,100
22 mov cx,98
23 L: push bx
24 shr bx,1
25 jnc L1
26 pop bx
27 mov word ptr [di],bx
28 inc di
29 jmp L2
30 L1:
31 pop bx
32 L2:
33 dec bx
34 loop L
35 ;;;;;;;;;;;;;;;;;;;;;;;;;
36 mov si,offset tmp0
37 mov di,offset tmp1
38 xor ax,ax
39 s:
40 mov al,[si]
41 cmp al,0
42 jz ol
43 mov bx,si
44 inc bx
45 s1:
46 push ax
47 cmp byte ptr [bx],0
48 jz s3
49 div byte ptr [bx]
50 cmp ah,0
51 jz s2
52 inc bx
53 pop ax
54 jmp s1
55 s3:
56 mov [di],al
57 inc di
58 inc si
59 jmp s
60 s2:
61 pop ax
62 inc si
63 jmp s
64 ;;;;;;;;;;;;;;;;;;;;;;;;;;
65
66 ol: mov byte ptr [di],2
67 disp: xor ax,ax
68 mov al,[di]
69 cmp al,0
70 jz over
71 cmp al,10
72 ja h
73 mov dl,al
74 call show
75 call kg
76 dec di
77 jmp disp
78 h:
79 div byte ptr ds:divisor
80 mov dl,al
81 mov dh,ah
82 call show
83 mov dl,dh
84 call show
85 call kg
86 dec di
87 jmp disp
88 ;
89 over: mov ah,4ch
90 int 21h
91 ;
92 show proc uses ax dx
93 add dl,30h
94 mov ah,2
95 int 21h
96 ret
97 show endp
98 ;
99 kg proc uses ax dx
100 mov dl,' '
101 mov ah,2
102 int 21h
103 ret
104 kg endp
105 ;
106 code ends
107 end start
;-----------------------------------------------------
心得:由于质数(素数)都为奇数, 因此,先生成一个奇数的数组。然后用一个外循环一个内循环来逐个做除法,检查余数是否为零。都不是零的就是素数, 否则, 就不是素数。
评论次数(0) |
浏览次数(1256) |
类型(程序与练习) |
收藏此文 |