8085 微处理器中将 ASCII 转换为二进制的程序
在这里,我们将看到一个 8085 程序,该程序将 ASCII 转换为二进制值。
问题陈述−
编写一个 8085 汇编级程序,将 ASCII 转换为二进制或十六进制字符等效值。
讨论−
数字 00H 的 ASCII 码为 30H (48D),而 09H 的 ASCII 码为 39H (57D)。因此所有其他数字都在 30H 到 39H 的范围内。0AH 的 ASCII 值为 41H (65D),而 0FH 的 ASCII 值为 46H (70D),因此所有其他字母 (B、C、D、E、F) 都在 41H 到 46H 的范围内。
这里的逻辑很简单。我们将检查 ASCII 值是否小于 58H (9 的 ASCII 码 + 1)。当数字小于 58 时,它就是数值。因此,我们只需从 ASCII 值中减去 30H,而当它大于 58H 时,它就是字母值。因此,为此,我们正在减去 37H。
输入
第一个输入
地址 | 数据 |
---|---|
… | … |
8000 | 41 |
… | … |
第二个输入
地址 | 数据 |
---|---|
… | … |
8000 | 35 |
… | … |
第三个输入
地址 | 数据 |
---|---|
… | … |
8000 | 46 |
… | … |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 | |
---|---|---|---|---|---|
F000 | 21, 00, 80 | | LXI H, 8000H | 加载数字的地址 | |
F003 | 7E | | MOV A,M | 将 ASCII 数据从内存加载到累加器 | |
F004 | FE, 58 | | CPI 58H | 与 ASCII(9) + 1 比较 | |
F006 | D2, 0E, F0 | | JNC NUM | 输入为数字 | |
F009 | D6, 37 | | SUI 37H | 减去偏移量以获取字母字符 | |
F00B | C3, 10, F0 | | JMP STORE | 存储结果 | |
F00E | D6, 30 | NUM | SUI 30H | 减去 30 以获取数值 | |
F010 | 23 | STORE | INX H | 指向下一个位置 | |
F011 | 77 | | MOV M,A | 将累加器内容存储到内存 | |
F012 | 76 | | HLT | 终止程序 | |
| | | | | |
输出
第一个输出
地址 | 数据 |
---|---|
… | … |
8001 | 0A |
… | … |
第二个输出
地址 | 数据 |
---|---|
… | … |
8001 | 05 |
… | … |
第三个输出
地址 | 数据 |
---|---|
… | … |
8001 | 0F |
… | … |
广告