当前位置: 首页 > 编程笔记 >

8085程序将两个16位二进制数相乘

荆亦
2023-03-14
本文向大家介绍8085程序将两个16位二进制数相乘,包括了8085程序将两个16位二进制数相乘的使用技巧和注意事项,需要的朋友参考一下

现在让我们看一下Intel 8085微处理器的程序。该程序将计算两个16位数字的乘法。

问题陈述

编写8085汇编语言程序,将两个分别存储在8000H -8001H和8002H-8003H的16位数字相乘。

讨论区

该程序从存储单元8000H – 8001Hand 8002H – 8003H中获取16位数据。32位结果存储在8050H–8053H单元中。

在这里,我们测试了两个16位数字。结果如下

      1111H×1111H = 01234321H 

      1C24H×0752H = 00CDFF88H

输入项

第一次输入

地址 数据
.
.
.
.
.
.
8000 11
8001 11
8002 11
8003 11
.
.
.
.
.
.

第二输入 

地址 数据
.
.
.
.
.
.
8000 24
8001 1C
8002 52
8003 07
.
.
.
.
.
.

流程图

程序

地址 十六进制代码 标签 助记符 注释
F000 31,00,20
LXI SP,2000H    InitializeStack指针
F003 2A,00、80
LHLD 8000H   从8000H-8001H加载16位数据
F006 EB
XCHG     交换HL和DE的数据
F007 2A,02、80
LHLD 8002H   加载第二个16位数字
F00A E5
PUSH H 将HL对推入堆栈
F00B C1
POP B    用堆栈中的HL对内容加载BC
F00C 21,00,00
LXI H,0000H 清除HL对
F00F 22、52、80
SHLD 8052H    存储0000具有LS 2字节的结果
F012 19 LOOP DAD D 
将第一个号码添加到HL对
F013 D2、1F,F0
JNC NINC  
如果CY = 0,则跳至NINC
F016 E5
PUSH H
将HL推入堆栈
F017 2A,52、80
LHLD 8052    从LS的2字节结果中加载HL对
F01A 23
INX H    增加HLpair
F01B 22、52、80
SHLD 8052H    将HL对存储为结果的LS 2字节  
F01E E1
POP H    将堆栈内容弹出到HL对
F01F 0B DCX B 
DCX B    减少BCregister对
F020 78
MOV A,B 将B加载到A
F021 B1
ORA C  
或C与A
F022 C2、12,F0
JNZ LOOP   
当Z = 0时跳至LOOP
F025 22、50、80
SHLD 8050H   将HL对存储到8050H
F028 76
HLT 终止程序

输出结果

第一输出

地址 数据
.
.
.
.
.
.
8050 21
8051 43
8052 23
8053 01
.
.
.
.
.
.

第二输出 

地址 数据
.
.
.
.
.
.
8050 88
8051 FF
8052 CD
8053 00
.
.
.
.
.
.
 类似资料:
  • 所以我一直在努力完成这个任务,我必须写一个java代码来将两个二进制数相乘为一个字符串。我不知道如何将它们相乘并保存在单独的字符串中,这样我就可以在最后添加它们。有人能给我一些提示吗?我必须用给定的字符串做乘法,但不能将它们转换为整数。我知道如何在纸上做乘法,但不知道如何将其转换为代码。这是我目前为止的代码。

  • 本文向大家介绍程序将8051微处理器中的两个8位数字相乘,包括了程序将8051微处理器中的两个8位数字相乘的使用技巧和注意事项,需要的朋友参考一下 在这里,我们将看到如何使用此8051微控制器将两个8位数字相乘。寄存器A和B将用于乘法。没有其他寄存器可用于乘法。乘法的结果可能超过8位大小。因此,高位字节存储在寄存器B中,低位字节在乘法运算后将存储在累加器A中。 我们在20H和21H位置取两个数字F

  • 本文向大家介绍8085程序查找8位数字的总和,包括了8085程序查找8位数字的总和的使用技巧和注意事项,需要的朋友参考一下 在此程序中,我们将看到如何添加8位数字的数字。 问题陈述 编写8085汇编语言程序,以添加存储在存储单元8000H中的8位数字的数字。 讨论区 要获取8位数字的数字,我们可以使用掩蔽操作。首先,我们将掩盖上半字节,然后是下半字节。遮盖了较低的半字节后,我们必须将其向右旋转以使

  • 本文向大家介绍在8051微处理器中将两个8位数字相除的程序,包括了在8051微处理器中将两个8位数字相除的程序的使用技巧和注意事项,需要的朋友参考一下 在这里,我们将看到除法运算。使用此8051微控制器,此操作将被用于除以两个8位数字。寄存器A和B将用于此操作。没有其他寄存器可用于除法。除法的结果分为两个部分。商部分和余数部分。寄存器A将保留商数,寄存器B将保留余数。 我们在位置20H和21H取两

  • 我想做一个java程序,用户输入一个十进制数,然后它转换成二进制。这是我到目前为止所拥有的,但是当我输入8时,虽然循环只循环一次,只给我0。我知道二进制中的8是1000,所以我不明白我做错了什么。我需要代码变得简单。请帮忙谢谢

  • 问题内容: 我有23位表示为字符串,并且需要将此字符串作为4个字节写入二进制文件。最后一个字节始终为0。以下代码有效(Python 3.3),但感觉不太好(我对Python和编程很陌生)。您有任何改善技巧吗?似乎for循环可能有用,但是如何在循环中进行切片而不出现IndexError?请注意,当我将位提取到一个字节中时,我会反转位顺序。 问题答案: 您可以将其视为int,然后按以下方式创建4个字节