问题–在8086微处理器中编写汇编语言程序, 以将8位BCD编号转换为其相应的ACSII代码。
假设–
【8086程序将8位BCD码转换为ASCII码】程序的起始地址:400
输入存储器位置:2000
输出存储位置:3000
范例:
Input:
DATA: 98H in memory location 2000Output:
DATA: 38H in memory location 3000 and
39H in memory location 3001
算法–
- 将内存位置2000的内容加载到寄存器AL中
- 将寄存器AL中的内容复制到寄存器AH中
- 用0F在寄存器AL上执行AND操作
- 将04分配给CL寄存器
- 通过使用CL执行SHR指令来移位AH的内容
- 用3030在寄存器AX上执行OR操作
- 将AX的内容存储在内存位置3000中
内存地址 | 助记符 | 注释 |
---|---|---|
400 | MOV AL, [2000H] | AL < -[2000] |
404 | MO AH, AL | AH < -AL |
406 | AND AL, 0F | AL < -(AL AND 0F) |
408 | MOV CL, 04 | CL < -04 |
40A | SHR AH, CL | 将AH内容右移4位(CL值) |
40C | OR AX, 3030H | AX < -(AX OR 3030) |
40F | MOV [3000], AX | [3000] < -AX |
413 | HLT | 停止执行 |
- MOV AL, [2000]:在AL中加载内存位置2000的内容
- MOH AH, AL:在AH中复制AL的内容
- AND AL, 0F:用0F在AL上执行AND操作
- MOV CL, 04将04分配给CL寄存器
- SHR AH, CL:将AH寄存器的内容右移4位, 即CL寄存器的值
- OR AX, 3030:用3030在AX上执行OR操作
- MOV [3000], AX:将AX寄存器对的内容存储在3000个存储地址中
- HLT:停止执行程序
推荐阅读
- 8086程序,以确定与另一个数组元素相对应的第一数组元素的模数
- 8085程序将两个8位数字相加而不带进位
- 8085程序将一个字节分离(或拆分)为两个半字节
- 在软件开发中学习的20条黄金法则
- 用Java创建流的10种方法
- 2020年10种流行的物联网家庭设备
- 人们在面试中容易犯的10个错误
- android学习第一天(android的介绍和基础)()
- android中webview loadUrl(String url,Map header)方法和postUrl(String url,byte[] postData)方法同时使用问题;