永发信息网

汇编输出前30个素数

答案:3  悬赏:30  手机版
解决时间 2021-06-05 13:31
  • 提问者网友:几叶到寒
  • 2021-06-04 14:19
汇编编程输出前30个素数,不会啊,谁帮帮我 最终程序啊
最佳答案
  • 五星知识达人网友:像个废品
  • 2021-06-04 15:11

code segment
assume cs:code
start:
mov cx,0 ;计数
mov ax,2
mov bx,2
next:
cmp bx,ax
jl continue
inc cx
call display
cmp cx,30
jz exit
jmp nextnum
continue:
xor dx,dx
push ax
div bx
pop ax
inc bx
cmp dx,0
jnz next
nextnum:
inc ax
mov bx,2
jmp next


exit:
mov ah,4ch
int 21h
display proc near
push ax
push bx
push cx
push dx
xor cx,cx
mov bx,10
continue1:
xor dx,dx
div bx
push dx
inc dx
inc cx
cmp ax,0
jnz continue1
continue2:
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
运行结果输出:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113

全部回答
  • 1楼网友:话散在刀尖上
  • 2021-06-04 16:27

好高深啊,学习下了,做个标记不行吗大哥。。。

pop dx add dl,30h mov ah,2 int 21h

  • 2楼网友:封刀令
  • 2021-06-04 15:31
; 256以内的素数,显示输出前30个 ; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code ; ------------------------------------- ; 判断素数 ; 入口参数:AL=256以内无符号整数 ; 返回参数:若AL是素数,进位标志置位;否则,清位 Estimation Proc Near push si push cx push ax lea si,PrimeLess cmp al,1 jz @@Not_Prime ;1不是素数 mov cx,4 @@Less_Prime: cmp al,[si] jz @@Yes_Prime ;2、3、5、7是素数 inc si loop @@Less_Prime test al,1 jz @@Not_Prime ;除了2,其它偶数不是素数 lea si,PrimeLess[1] mov cx,3 @@Divide357:push ax div byte ptr [si] test ah,ah jnz $+5 pop ax jmp @@Not_Prime pop ax inc si loop @@Divide357 jmp $+5 @@Not_Prime:clc ;不是素数,清进位标志 jmp $+3 @@Yes_Prime:stc ;是素数,置进位标志 pop ax pop cx pop si ret PrimeLess db 2,3,5,7 Estimation EndP ; ------------------------------------- ; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示 ; 入口:AX=二进制数 ; 出口:在当前光标位置显示转换后的ASCII码数字 Dec_ASCII Proc Near push dx push bx push di mov bx,10 lea di,@@Temp_Save[6] mov byte ptr [di],'$' dec di cld @@Divide: xor dx,dx div bx or dl,30h mov [di],dl dec di test ax,0ffffh jnz @@Divide inc di push di pop dx mov ah,9 int 21h pop di pop bx pop dx ret @@Temp_Save db 7 dup(?) Dec_ASCII EndP ; ------------------------------------- Start: push cs pop ds ;使数据段与代码段同段 push cs pop es ;使附加段与代码段同段 mov cx,30 mov ax,1 ;自然数初值 cld PrimeSum: call Estimation ;判断素数子程序 jc $+5 ;素数 inc ax ;自然数增1 jmp PrimeSum push ax call Dec_ASCII ;把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示 cmp cx,1 jz $+8 mov dl,',' mov ah,2 int 21h pop ax inc ax ;自然数增1 loop PrimeSum Exit_Proc: mov ah,4ch ;结束程序 int 21h Code ENDS END Start ;编译到此结束
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯