8085程序判断数字是否为素数
在这个程序中,我们将了解如何使用8085来检查一个数字是否为素数。
问题陈述
编写8085汇编语言程序,以检查给定数字是否为素数。
讨论
这里的方法略有不同。我们实际上是在计算唯一因子的数量。对于素数,因子只有两个:1和它本身。所以,如果结果是02H,则它是素数,否则不是素数。由于没有除法运算,我们必须通过重复减法来执行除法。
输入
地址 | 数据 |
---|---|
F100 | 07 |
地址 | 数据 |
---|---|
F100 | FF |
地址 | 数据 |
---|---|
F100 | 2F |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, F1 | | LXI H,F100 | 指向F100获取数字 |
F003 | FE | | MOV A,M | 将数字加载到累加器 |
F004 | 0E | | MVI C,00 | 清零C寄存器 |
F006 | 57 | | MOV D,A | 将A复制到D |
F007 | 5F | | MOV E,A | 将A复制到E |
F008 | 42 | L2 | MOV B,D | 将D加载到B |
F009 | B8 | L1 | CMP B | 比较B与A |
F00A | DA, 11, F0 | | JC LABEL | 如果产生进位,跳转到LABEL |
F00D | 90 | | SUB B | 从A减去B |
F00E | C2, 09, F0 | | JNZ L1 | 跳转到L1 |
F011 | FE, 00 | LABEL | CPI 00 | 比较A与00H |
F013 | C2, 17, F0 | | JNZ SKIP | 如果Z=0,跳转到SKIP |
F016 | 0C | | INR C | 将C加1 |
F017 | 7B | SKIP | MOV A,E | 再次将E加载到A |
F018 | 15 | | DCR D | 将D减1 |
F019 | C2, 08, F0 | | JNZ L2 | 如果Z=0,跳转到L2标签 |
F01C | 79 | | MOV A,C | 将C加载到A |
F01D | 32, 01, F1 | | STA F101 | 将结果存储到F101 |
F020 | 76 | | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
F150 | 02 |
这是素数
地址 | 数据 |
---|---|
F150 | 08 |
这不是素数
地址 | 数据 |
---|---|
F150 | 02 |
这是素数
广告