三九宝宝网宝宝教育学龄段教育

解释下代码分析详细点

02月13日 编辑 39baobao.com

code segment;程序功能:输出30个素数

assume cs:code

start:

mov cx,0 ;计数

mov ax,2 ;从2递增,用判断此数是否素数(2是第一个素数)

mov bx,2 ;除数从2开始增递到ax

next:

cmp bx,ax ;判断是否素数

jl continue ;不是素数则跳转到continue加1继续

inc cx ;ax是素数,cx计数加1

call display;显示ax中的结果

cmp cx,30;计数判断

jz exit ;输出结束,跳出循环

jmp nextnum

continue:

xor dx,dx ;字除法,dx要清0

push ax ;保存ax的值到栈中

div bx ;

pop ax ;作除法后,恢复ax的值

inc bx ;被除数递增

cmp dx,0 ;判断能否整除

jnz next ;不能整除则可能是素数,继续除数递增判断余数

nextnum:

inc ax ;能整除则该数不是素数,取下一个数继续进行判断

mov bx,2 ;除数重新赋2

jmp next ;继续

exit:

mov ah,4ch;退出程序返回控制台

int 21h

display proc near;以10进制字符串输出ax中的值并在其后输出一个空格

push ax

push bx

push cx

push dx

xor cx,cx;记录栈中元素

mov bx,10

continue1:;除10取余进栈

xor dx,dx

div bx

push dx

inc dx

inc cx

cmp ax,0

jnz continue1

continue2:;出栈数字加30h转ASCII码输出

pop dx

add dl,30h

mov ah,2

int 21h

loop continue2

mov dl,' ';输出一个空格

mov ah,2

int 21h

pop dx

pop cx

pop bx

pop ax

ret

display endp

code ends

end start

推荐阅读
图文推荐