使用查找表查找数字的平方值的8085程序
现在让我们来看一个Intel 8085微处理器的程序。这个程序主要是为了求一个数字的平方。
问题陈述
编写8085汇编语言程序,使用查找表查找数字的平方。
讨论
在这个例子中,我们使用查找表来查找数字的平方。这个程序的主要限制是它只能找到0-F范围内的平方。当输入大于F时,它将失败。我们将平方结果存储到内存中。当数字大于F时,我们将FFH存储到内存中以指示错误。
我们从8000H位置获取数字,查找表存储在9000H位置。
查找表如下所示。
数字 | 平方值 |
---|---|
00 | 00 |
01 | 01 |
02 | 04 |
03 | 09 |
04 | 10 |
05 | 19 |
06 | 24 |
07 | 31 |
08 | 40 |
09 | 51 |
0A | 64 |
0B | 79 |
0C | 90 |
0D | A9 |
0E | C4 |
0F | E1 |
输入
第一个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 06 |
. . . | . . . |
第二个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 0C |
. . . | . . . |
第三个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 25 |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21,00, 90 | LXIH, 9000H | 指向查找表地址 | |
F003 | 3A,00, 80 | LDA 8000H | 获取数据 | |
F006 | FE,0F | CPI 0FH | 检查输入是否> 15D | |
F008 | DA,13, F0 | JC AFTER | 检查数字是否大于0A | |
F00B | 3E, FF | MVIA, FFH | 将FFH加载到A | |
F00D | 32,50, 80 | STA 8050H | 为大于15D的数字存储FFH | |
F010 | C3,1B, F0 | JMP DONE | 结束程序 | |
F013 | 4F | AFTER | MOVC, A | 添加所需的地址 |
F014 | 06,00 | MVIB,00H | 清除寄存器B | |
F016 | 09 | DAD B | 将BC与HL对相加 | |
F017 | 7E | MOVA, M | 从查找表中获取结果 | |
F018 | 32,50, 80 | STA 8050H | 存储结果 | |
F01B | 76 | DONE | HLT | 终止程序 |
输出
第一个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 24 |
. . . | . . . |
第二个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 90 |
. . . | . . . |
第三个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | FF |
. . . | . . . |
广告