8086汇编语言判断10-300内的整数是否素数
时间: 2023-06-15 07:06:06 浏览: 122
下面是一个简单的8086汇编程序,用于判断10-300内的整数是否素数:
```
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB 'Number is prime$'
MSG2 DB 'Number is not prime$'
.CODE
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX
MOV CX, 10 ; 初始化计数器为10
LOOP1:
CMP CX, 300 ; 如果计数器大于300,跳出循环
JG EXIT
MOV BX, 2 ; 初始化除数为2
LOOP2:
MOV AX, CX ; 将CX的值赋给AX
XOR DX, DX ; 将DX清零
DIV BX ; 将AX除以BX,商在AL中,余数在AH中
CMP AH, 0 ; 如果余数为0,说明CX可以被BX整除,不是素数
JE NOT_PRIME
INC BX ; 将除数加1
CMP BX, CX ; 如果除数大于CX,说明CX是素数
JG IS_PRIME
JMP LOOP2 ; 继续尝试下一个除数
IS_PRIME:
MOV AH, 9
LEA DX, MSG1
INT 21H ; 输出“Number is prime”
JMP CONTINUE
NOT_PRIME:
INC CX ; 将计数器加1
JMP LOOP1 ; 继续尝试下一个数字
CONTINUE:
INC CX ; 将计数器加1
JMP LOOP1 ; 继续尝试下一个数字
EXIT:
MOV AX, 4C00H
INT 21H ; 程序结束
MAIN ENDP
END MAIN
```
该程序的实现思路是,从10开始逐个判断300以内的整数是否为素数。对于每个数字,我们从2开始逐个尝试除数,如果能够整除,则说明该数字不是素数,否则继续尝试下一个除数。如果所有除数都不能整除该数字,则说明该数字是素数。
在程序中,我们使用CX寄存器来作为计数器,从10开始逐个尝试数字。对于每个数字,我们使用BX寄存器来作为除数,从2开始逐个尝试。使用DIV指令进行除法运算,如果余数为0,则说明该数字能够被除数整除,不是素数;否则继续尝试下一个除数。如果所有除数都不能整除该数字,则说明该数字是素数,输出相应信息。最后,继续尝试下一个数字,直到计数器值大于300,程序结束。
阅读全文