8085程序解压16位BCD码,并将其存储到连续位置
在这里我们将看到如何从内存中获取16位BCD数据并对其进行解压,然后使用8085将其存储到内存中。
问题陈述
编写8085程序,从内存中获取16位BCD数,然后通过解压将其每个数字存储到不同的位置。
讨论
为了解决这个问题,我们将创建一个子程序,该子程序可以解压1字节BCD数并将其存储到内存中,然后我们将该子程序使用两次来存储16位数据。该子程序将通过掩盖高4位和低4位来分割数字,并将其存储到内存中。
输入
DE寄存器对中的1234
流程图
程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 31, 00, FC | | LXI SP,FC00 | 初始化堆栈指针 |
| F003 | 11, 34, 12 | | LXI D,ABCD | 加载16位数 |
| F006 | 21, 00, 90 | | LXI H,9000 | 指向目标地址 |
| F009 | 7B | | MOV A,E | 将E移入A |
| F00A | CD, 13, F0 | | CALL UNPACK | 解压低字节并存储 |
| F00D | 23 | | INX H | 指向下一个位置 |
| F00E | 7A | | MOV A,D | 获取高字节 |
| F00F | CD, 13, F0 | | CALL UNPACK | 解压高字节并存储 |
| F012 | 76 | | HLT | 终止程序 |
| F013 | D5 | UNPACK | PUSH D | 将DE压入堆栈 |
| F014 | 57 | | MOV D,A | 将数字存储到D中 |
| F015 | E6, F0 | | ANI 0FH | 掩盖高4位 |
| F017 | 77 | | MOV M,A | 存储低4位 |
| F018 | 7A | | MOV A,D | 再次获取数字 |
| F019 | E6, F0 | | ANI F0H | 掩盖低4位 |
| F01B | 07 | | RLC | 左移旋转 |
| F01C | 07 | | RLC | 左移旋转 |
| F01D | 07 | | RLC | 左移旋转 |
| F01E | 07 | | RLC | 左移旋转 |
| F01F | 23 | | INX H | 指向下一个位置 |
| F020 | 77 | | MOV M,A | 将高4位存储到内存中 |
| F021 | D1 | | POP D | 从堆栈中弹出DE |
| F022 | C9 | | RET | 从子程序返回 |
输出
| 地址 | 数据 |
|---|---|
| … | … |
| 9000 | 04 |
| 9001 | 03 |
| 9002 | 02 |
| 9003 | 01 |
| … | … |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP