被转换的ASCII码十进制数45、12(即34H,35H,31H,32H)存放在0500H~0503H单元中,转换的结果存放在20H,21H单元中。
时间: 2023-12-02 15:04:09 浏览: 95
将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处
4星 · 用户满意度95%
这道题目是要求将 ASCII 码表示的字符串 "45" 和 "12" 转化为对应的数字 45 和 12,并将它们的和 57 存储在内存地址 20H 和 21H 中。
具体的步骤如下:
1. 读取内存地址 0500H 和 0501H 中的 ASCII 码,即 "4" 和 "5",分别减去 ASCII 码中的 "0",得到对应数字 4 和 5。
2. 将数字 4 左移一位,得到 40H。
3. 将数字 5 加上 40H,得到十进制数 45。
4. 重复步骤 1 到 3,将字符串 "12" 转换为数字 12。
5. 将数字 45 和 12 相加,得到 57。
6. 将结果 57 存储在内存地址 20H 和 21H 中。
具体的汇编代码如下:
```
MOV AL, [0500H] ; 读取内存地址 0500H 中的 ASCII 码
SUB AL, '0' ; 减去 ASCII 码中的 '0',得到数字 4
SHL AL, 1 ; 左移一位,等价于乘以 2
ADD AL, [0501H] ; 加上内存地址 0501H 中的 ASCII 码,得到数字 45
MOV [20H], AL ; 存储结果到内存地址 20H
MOV AL, [0502H] ; 读取内存地址 0502H 中的 ASCII 码
SUB AL, '0' ; 减去 ASCII 码中的 '0',得到数字 1
SHL AL, 1 ; 左移一位,等价于乘以 2
ADD AL, [0503H] ; 加上内存地址 0503H 中的 ASCII 码,得到数字 12
ADD AL, [20H] ; 加上之前的结果 45,得到数字 57
MOV [21H], AL ; 存储结果到内存地址 21H
```
阅读全文