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 | 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 |
| . . . | . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP