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

📅  最后修改于: 2021-06-28 15:07:40             🧑  作者: Mango

问题–在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中

程序 –

Memory Address Mnemonics Comments
400 MOV AL, [2000] AL<-[2000]
404 MOV AH, AL AH<-AL
406 AND AL, 0F AL <- (AL AND 0F)
408 MOV CL, 04 CL <- 04
40A SHR AH, CL Shift AH content Right by 4 bits(value of CL)
40C OR AX, 3030 AX <- (AX OR 3030)
40F MOV [3000], AX [3000]<-AX
413 HLT Stop Execution

解释 –

  1. MOV AL,[2000]:在AL中加载存储位置2000的内容
  2. MOV 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:停止执行程序