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

程序
| 地址 | 十六进制代码 | 标签 | 指令 | 注释 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H,8000H | 加载第一个操作数地址 | |
| F003 | 46 | MOV B, M | 将第一个操作数存储到B寄存器 | |
| F004 | 23 | INX H | 增加HL寄存器对 | |
| F005 | AF | XRA A | 清零累加器 | |
| F006 | 4F | MOV C, 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 | LXI H,8050H | 加载目标地址 | |
| F013 | 71 | MOV M, C | 将C寄存器内容存储到内存 | |
| F014 | 23 | INX H | 增加HL寄存器对 | |
| F015 | 77 | MOV M, A | 将累加器内容存储到内存 | |
| F016 | 76 | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8050 | 93 |
| 8051 | D0 |
. . . | . . . |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP