汇编语言 | 对100以内的整数判断是否素数,如果是素数,以十进制形式输出,每行输出10个

这是一个很简单的判断程序,但是用汇编语言来写会比较麻烦。注意输出格式的要求

素数含义:只能被1和自己整除

以下是简化段定义下的程序

.MODEL SMALL
.STACK 4096
.DATA
CHANGELINE DB 13,10,'$'
ARRAY WORD 100 dup(?)
COUNT DW ?
MESS DB "Prime number: ",0dh,0ah,'$'
.CODE
MAIN PROC FAR
	MOV AX,@DATA
	MOV DS,AX
	MOV CX,10
	MOV BH,0
	MOV SI,OFFSET ARRAY
	MOV BL,2;从2-100查找
L1: CMP BL,100
	JA L5;大于100停止
	MOV DL,2;除以2-(bl-1)
L2: CMP DL,BL
	JAE L3;大于等于则为素数
	MOV AX,BX
	DIV DL
	CMP AH,0;能整除则不是素数
	JZ L4
	INC DL;不能整除,加一再尝试
	JMP L2
L3: MOV [SI],BL
	ADD SI,TYPE ARRAY 
	INC COUNT
L4: INC BL;查找下一个数
	JMP L1	
L5: CALL PRINT
	MOV AX,4C00H
	INT 21H
MAIN ENDP

PRINT PROC NEAR
	MOV DX,OFFSET MESS
    MOV AH,09H
    INT 21H
	MOV SI,OFFSET ARRAY
	MOV CX,COUNT;做count次loop
NEXT:MOV AX,COUNT
	SUB AX,CX ;每次cx减1 
	MOV BL,10
	DIV BL
	CMP AH,0
	JNZ AGAIN;ax-cx不是10的倍数跳走输出素数
	MOV DX,OFFSET CHANGELINE
    MOV AH,09H;输出换行
    INT 21H
AGAIN:
	MOV BL,[SI]
	MOV BH,0
	PUSH CX;转十进制输出的acssi码
	MOV CX,0
D1: MOV AX,BX
	MOV DX,0
	MOV BX,10
	DIV BX
	PUSH DX
	INC CX
	MOV BX,AX
	CMP AX,0
	JNZ D1
D2: POP DX
	ADD DX,30H
	MOV AH,2H
	INT 21H
	LOOP D2
	POP CX
	MOV DL,00H
	MOV AH,2H
	INT 21H
	ADD SI,TYPE ARRAY
	LOOP NEXT
RET
PRINT ENDP

END

欢迎批评指正

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值