8085程序查找16位数的1补码和2补码
在这个程序中,我们将看到如何查找16位数的1补码和2补码。
问题陈述
编写8085汇编语言程序,查找存储在8000H和8001H中的16位数的1补码和2补码。
讨论
8085有一个指令CMA。此指令对累加器的内容取反。对于1补码,CMA指令就足够了,对于2补码,我们需要在取反后将数字加1。
对于16位数,我们将数字放入HL对中,但是为了取反,我们必须将数字从H和L逐一复制到累加器中。然后通过INX指令,我们将增加HL对以获得2补码
我们从8000H和8001H获取数字,并将1补码存储在8050H和8051H位置,并将2补码存储在8052H和8053H位置。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | CD |
| 8001 | AB |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 助记符 | 注释 |
|---|---|---|---|
| F000 | 2A, 00, 80 | LHLD 8000H | 将内存中的数字加载到HL |
| F003 | 7C | MOV A, H | 将H的内容加载到A |
| F004 | 2F | CMA | 对累加器取反 |
| F005 | 67 | MOV H, A | 用A替换H |
| F006 | 7D | MOV A, L | 将L的内容加载到A |
| F007 | 2F | CMA | 对累加器取反 |
| F008 | 6F | MOV L, A | 用A替换L |
| F009 | 22, 50, 80 | SHLD 8050H | 存储1补码结果 |
| F00C | 23 | INX H | 将HL加1 |
| F00D | 22, 52, 80 | SHLD 8052H | 存储2补码结果 |
| F010 | 76 | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8050 | 32 |
| 8051 | 54 |
| 8052 | 33 |
| 8053 | 54 |
| . . . | . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP