问题–编写汇编级语言程序以将ASCII代码转换为其相应的HEX代码。
例子:
Input:
DATA: 31H in memory location 2050
Output:
DATA: 0BH in memory location 3050
假定程序的起始地址,输入存储位置和输出存储位置分别为2000、2050和3050。
算法 –
- 在累加器中输入2050的内容。
- 从累加器中减去30H。
- 将累加器的内容与0AH进行比较。
- 如果累加器的内容小于0A,则转到步骤6,否则转到步骤5。
- 从累加器中减去07H。
- 将累加器的内容存储到内存位置3050。
- 终止程序。
程序 –
ADDRESS | MNEMONICS | COMMENTS | ||||||
---|---|---|---|---|---|---|---|---|
2000 | LDA 2050 | A | ||||||
2003 | SUI 30H | A | 2005 | CPI 0AH | ||||
2007 | JC 200D | Check for carry | ||||||
200B | SUI 07H | A | 200D | STA 3050 | [3050] | 2010 | HLT | Stop execution |
解释 –
- LDA 2050将存储器位置2050的内容加载到累加器。
- SUI 30H立即从累加器中减去30H。
- CPI 0AH立即将0AH与累加器的数据进行比较。
- JC 200D检查是否进位,然后转到地址200D。
- SUI 07H立即从累加器中减去07H。
- STA 3050将累加器的内容存储到内存位置3050。
- HLT停止执行程序。