问题–编写汇编级语言程序, 以将8位BCD编号转换为其相应的ACSII代码。
假设–
程序的起始地址:2000
输入存储器位置:2050
输出存储器位置:3050和3051
ASCII码数字0 – 9
示例–
算法–
- 在累加器中输入2050的内容
- 将累加器的内容移至寄存器B
- 使用AND与0F和ADD 30分隔最低有效位到累加器
- 将累加器的内容存储到内存位置3050
- 将寄存器B的内容移至累加器
- 使用AND与F0分隔最高有效位
- 旋转累加器内容4次
- 向累加器加30
- 将累加器的内容存储到内存位置3051
程序–
地址 | 助记符 | 注释 |
---|---|---|
2000 | LDA 2050 | A <-[2050] |
2003 | MOV B, A | B <-A |
2004 | ANI 0F | A <-A和0F |
2006 | ADI 30 | A <-A + 30 |
2008 | STA 3050 | [3050] <-A |
200B | MOV A, B | A <-B |
200C | ANI F0 | A <-A和F0 |
200E | RLC | 向左旋转 |
200F | RLC | 向左旋转 |
2010 | RLC | 向左旋转 |
2011 | RLC | 向左旋转 |
2012 | ADI 30 | A <-A + 30 |
2014 | STA 3051 | [3051] <-A |
2017 | HLT | 停止执行 |
说明–
- LDA 2050将内存位置2050的内容加载到累加器
- MOV B, A复制累加器的内容到寄存器B
- ANI 0FAND累加器的内容与立即数0F
- ADI 30向累加器加30
- STA 3050将累加器的内容存储到内存位置3050
- MOV A, B将寄存器B的内容复制到累加器
- ANI F0AND累加器的内容与立即数据F0
- RLC向左旋转累加器的内容, 不带进位
- RLC向左旋转累加器的内容, 不带进位
- RLC向左旋转累加器的内容, 不带进位
- RLC向左旋转累加器的内容, 不带进位
- ADI 30向累加器加30
- STA 3051将累加器的内容存储到内存位置3051
- HLT停止执行程序