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。
输入
第一个输入
地址 | 数据 |
---|---|
… | … |
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 |
… | … |
广告