8086程序将8位BCD码转换为ASCII码

2021年3月22日15:09:52 发表评论 877 次浏览

问题–在8086微处理器中编写汇编语言程序, 以将8位BCD编号转换为其相应的ACSII代码。

假设–

程序的起始地址:400

输入存储器位置:2000

输出存储位置:3000

范例:

Input: 
DATA: 98H in memory location 2000

Output:
DATA: 38H in memory location 3000 and 
      39H in memory location 3001

算法

  1. 将内存位置2000的内容加载到寄存器AL中
  2. 将寄存器AL中的内容复制到寄存器AH中
  3. 用0F在寄存器AL上执行AND操作
  4. 将04分配给CL寄存器
  5. 通过使用CL执行SHR指令来移位AH的内容
  6. 用3030在寄存器AX上执行OR操作
  7. 将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 停止执行

说明–

  1. MOV AL, [2000]:在AL中加载内存位置2000的内容
  2. MOH AH, AL:在AH中复制AL的内容
  3. AND AL, 0F:用0F在AL上执行AND操作
  4. MOV CL, 04将04分配给CL寄存器
  5. SHR AH, CL:将AH寄存器的内容右移4位, 即CL寄存器的值
  6. OR AX, 3030:用3030在AX上执行OR操作
  7. MOV [3000], AX:将AX寄存器对的内容存储在3000个存储地址中
  8. HLT:停止执行程序

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: