8085程序:两个8位数的乘法
在这个程序中,我们将学习如何使用8085微处理器将两个8位数相乘。
问题陈述
编写8085汇编语言程序,将存储在内存位置中的两个8位数相乘,并将16位结果存储到内存中。
讨论
8085没有乘法运算。为了得到乘法的结果,我们应该使用重复加法的方法。
两个8位数相乘后,可能会生成1字节或2字节的数字,因此我们使用两个寄存器来保存结果。
我们将数据保存在8000H和8001H位置。结果存储在8050H和8051H位置。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | DC |
| 8001 | AC |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21,00, 80 | LXIH,8000H | 加载第一个操作数地址 | |
| F003 | 46 | MOVB, M | 将第一个操作数存储到B寄存器 | |
| F004 | 23 | INX H | 增加HL寄存器对 | |
| F005 | AF | XRA A | 清零累加器 | |
| F006 | 4F | MOVC, A | 将00H存储到C寄存器 | |
| F007 | 86 | LOOP: | ADD M | 将内存单元与累加器相加 |
| F008 | D2,0C, F0 | JNC SKIP | 当进位标志为0时,跳过下一任务 | |
| F00B | 0C | INR C | 当进位为1时,增加C寄存器 | |
| F00C | 05 | SKIP: | DCR B | 减少B寄存器 |
| F00D | C2,07, F0 | JNZ LOOP | 当零标志不为1时,跳转到循环 | |
| F010 | 21,50, 80 | LXIH,8050H | 加载目标地址 | |
| F013 | 71 | MOVM, C | 将C寄存器的內容存储到内存 | |
| F014 | 23 | INX H | 增加HL寄存器对 | |
| F015 | 77 | MOVM, A | 将累加器的內容存储到内存 | |
| F016 | 76 | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8050 | 93 |
| 8051 | D0 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP