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 |
这是素数
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP