8085程序将ASCII转换为HEX
现在让我们看看英特尔 8085 微处理器的程序。此程序将把ASCII转换为HEX值。
问题陈述
编写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。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输入
第一个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 41 |
. . . | . . . |
第二个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 35 |
. . . | . . . |
第三个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 46 |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21,00, 80 | LXIH, 8000H | 加载数字的地址 | |
F003 | 7E | MOVA, M | 从内存中加载ASCII数据到累加器 | |
F004 | FE,58 | CPI58H | 与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 | MOVM, A | 将累加器内容存储到内存 | |
F012 | 76 | HLT | 终止程序 |
输出
第一个输出
地址 | 数据 |
---|---|
. . . | . . . |
8001 | 0A |
. . . | . . . |
第二个输出
地址 | 数据 |
---|---|
. . . | . . . |
8001 | 05 |
. . . | . . . |
第三个输出
地址 | 数据 |
---|---|
. . . | . . . |
8001 | 0F |
. . . | . . . |
广告