在keil2中实现被转换的ASCII码十进制数45、12(即34H,35H,31H,32H)存放在0500H~0503H单元中,转换的结果存放在20H,21H单元中。
时间: 2023-12-11 16:05:05 浏览: 120
将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处
4星 · 用户满意度95%
以下是在Keil2中实现的代码:
```
ORG 0
MOV DPTR, #0500H ; 加载指针DPTR,指向要被转换的ASCII码
MOVX A, @DPTR ; 读取第一个ASCII码
ADD A, #0 ; 将ASCII码转换为十进制数
MOV R0, A ; 存储十进制数到R0寄存器
INC DPTR ; 指针指向下一个ASCII码
MOVX A, @DPTR ; 读取第二个ASCII码
ADD A, #0 ; 将ASCII码转换为十进制数
MOV R1, A ; 存储十进制数到R1寄存器
INC DPTR ; 指针指向下一个ASCII码
MOVX A, @DPTR ; 读取第三个ASCII码
ADD A, #0 ; 将ASCII码转换为十进制数
MOV R2, A ; 存储十进制数到R2寄存器
INC DPTR ; 指针指向下一个ASCII码
MOVX A, @DPTR ; 读取第四个ASCII码
ADD A, #0 ; 将ASCII码转换为十进制数
MOV R3, A ; 存储十进制数到R3寄存器
MOV A, R0 ; 将第一个十进制数存储到累加器A
MOV R4, A ; 存储到R4寄存器
MOV A, R1 ; 将第二个十进制数存储到累加器A
MOV R5, A ; 存储到R5寄存器
MOV A, R2 ; 将第三个十进制数存储到累加器A
MOV R6, A ; 存储到R6寄存器
MOV A, R3 ; 将第四个十进制数存储到累加器A
MOV R7, A ; 存储到R7寄存器
MOV A, R4 ; 将第一个十进制数存储到累加器A
SUBB A, #12 ; 减去12
MOV @20H, A ; 存储结果到20H单元
MOV A, R5 ; 将第二个十进制数存储到累加器A
ADD A, #45 ; 加上45
MOV @21H, A ; 存储结果到21H单元
END
```
这段代码首先将DPTR指针指向要被转换的ASCII码所在的内存单元,读取每个ASCII码并将其转换为十进制数。然后,将每个十进制数存储到不同的寄存器中,最后将第一个和第二个十进制数进行计算,并将结果存储到20H和21H单元中。
阅读全文