问题–在8086微处理器中编写汇编语言程序,以使用8位操作反转16位数字。
示例–假设16位数字存储在内存位置2050和2051中。
算法 –
- 将存储器单元2050中的内容加载到寄存器AL中
- 将存储单元2051的内容加载到寄存器AH中
- 将0004分配给CX寄存器对
- 通过使用CX执行ROL指令来旋转AL的内容
- 通过使用CX执行ROL指令来旋转AH的内容
- 将AH的内容存储在内存位置2050中
- 将AL的内容存储在内存位置2051中
程序 –
Memory Address | Mnemonics | Comments |
---|---|---|
400 | MOV AL, [2050] | AL<-[2050] |
404 | MOV AH, [2051] | AH<-[2051] |
408 | MOV CX, 0004 | CX <- 0004 |
40B | ROL AL, CX | Rotate AL content left by 4 bits(value of CX) |
40D | ROL AH, CX | Rotate AH content left by 4 bits(value of CX) |
40F | MOV [2050], AH | [2050]<-AH |
413 | MOV [2051], AL | [2051]<-AL |
417 | HLT | Stop Execution |
解释 –
- MOV AL,[2050]:在AL中加载存储位置2050的内容
- MOV AH,[2051]:在AH中加载存储位置2051的内容
- MOV CX,0004:将0004分配给CX寄存器对
- ROL AL,CX:将AL寄存器的内容向左旋转4位,即CX寄存器对的值
- ROL AH,CX:将AH寄存器的内容向左旋转4位,即CX寄存器对的值
- MOV [2050],AH:将AH的内容存储在2050的存储地址中
- MOV [2051],AL:将AL的内容存储在2051的存储器地址中
- HLT:停止执行程序