汇编语言,两个数字的想加

Problem statement:

问题陈述:

Write an assembly language program in 8085 microprocessor to multiply two 16 bit numbers.

在8085微处理器中编写汇编语言程序,以将两个16位数字相乘。

Assumption:

假设:

  1. Starting address of program: 2000

    程序的起始地址:2000

  2. Input memory location: 2050, 2051, 2052, 2053

    输入存储器位置:2050、2051、2052、2053

  3. Output memory location: 2054, 2055, 2056, 2057

    输出存储器位置:2054、2055、2056、2057

Algorithm:

算法:

  1. Load the first data in HL pair.

    加载HL对中的第一个数据。

  2. Move content of HL pair to stack pointer.

    将HL对的内容移到堆栈指针。

  3. Load the second data in HL pair and move it to DE.

    将第二对数据装入HL对并将其移至DE。

  4. Make H register as 00H and L register as 00H.

    将H寄存器设为00H,将L寄存器设为00H。

  5. ADD HL pair and stack pointer.

    添加HL对和堆栈指针。

  6. Check for carry if carry increment it by 1 else move to next step.

    检查进位是否将进位加1,否则进入下一步。

  7. Then move E to A and perform OR operation with accumulator and register D.

    然后将E移至A,并对累加器和寄存器D执行“或”运算。

  8. The value of operation is zero, then store the value else goto step 3.

    运算的值为零,然后存储该值,否则转到步骤3。

Program:

程序:

ADDRESS MNEMONICS COMMENTS
2000 LHLD 2050 Load H-L pair with address 2050
2003 SPHL SAVE IT IN STACK POINTER
2004 LHLD 2052 Load H-L pair with address 2052
2007 XCHG EXCHANGE HL AND DE PAIR CONTENT
2008 LXI H,0000H H
200B LXI B,0000H B
200E DAD SP
200F JNC 2013 JUMP NOT CARRY
2012 INX B INCREMENT BC BY 1
2013 DCX D DECREMENT DE BY 1
2014 MOV A,E A
2015 ORA D OR THE CONTENT OF ACCUMULATOR AND D REGISTER
2016 JNZ 200E JUMP NOT ZERO
2019 SHLD 2054 L
201C MOV L,C L
201D MOV H,B B<H
201E SHLD 2056 L
2021 HLT ENDS THE PROGRAM
地址 记忆 注释
2000 LHLD 2050 向HL对加载地址2050
2003年 特快专递 保存在堆栈粉中
2004年 LHLD 2052 用地址2052加载HL对
2007年 XCHG 交换HL和DE配对内容
2008年 高度H,0000H H
200B LXI B,0000H
200E 爸爸SP
200楼 JNC 2013 跳不携带
2012年 INX B BC增加1
2013年 DCX D 递减DE 1
2014年 MOV A,E 一个
2015年 欧拉 或累加器和寄存器的内容
2016年 JNZ 200E 不跳零
2019年 SHLD 2054 大号
201C MOV L,C 大号
201D MOV H,B B <高
201E SHLD 2056 大号
2021年 HLT 结束计划

Explanation: Registers B, C, D, E, H, L and accumulator are used for general purpose.

说明:寄存器B,C,D,E,H,L和累加器用于通用。

  1. LHLD 2050: load HL pair with address 2050.

    LHLD 2050:向 HL对加载地址2050。

  2. SPHL: save the content of HL in stack pointer.

    SPHL:将HL的内容保存在堆栈指针中。

  3. LHLD 2052: load H-L pair with address 2052.

    LHLD 2052:使用地址2052加载HL对。

  4. XCHG: exchange the content of HL pair with DE.

    XCHG:与DE交换HL对的内容。

  5. LXI H, 0000H: make H as 00H and L as 00H.

    LXI H,0000H:将H设为00H,将L设为00H。

  6. LXI B, 0000H: make B as 00h and C as 00H.

    LXI B,0000H:将B设为00h,将C设为00H。

  7. DAD SP: ADD HL pair and stack pointer.

    DAD SP:添加HL对和堆栈指针。

  8. JNC 2013: jump to address 2013 if there will be no carry.

    JNC 2013:如果没有进位,请跳转至地址2013。

  9. INX B: increments BC register with 1.

    INX B:将 BC寄存器加1。

  10. DCX D: decrements DE register pair by 1.

    DCX D:将 DE寄存器对减1。

  11. MOV A, E: move the content of register E to accumulator.

    MOV A,E:将寄存器E的内容移至累加器。

  12. ORA D: or the content of accumulator and D register.

    ORA D:或累加器和D寄存器的内容。

  13. JNZ 200E: jump to address 200E if there will be no zero.

    JNZ 200E:如果不为零,则跳转到地址200E。

  14. SHLD 2054: store the result to memory address 2054 and 2055 from HL pair register.

    SHLD 2054:将结果从HL对寄存器存储到内存地址2054和2055。

  15. MOV L, C: move the content of register C to L.

    MOV L,C:将寄存器C的内容移至L。

  16. MOV H, B: move the content of register B to H.

    MOV H,B:将寄存器B的内容移至H。

  17. SHLD 2056: store the result to memory address 2056 and 2057 from HL pair register.

    SHLD 2056:将结果从HL对寄存器存储到内存地址2056和2057。

  18. HLT: terminates the program.

    HLT:终止程序。

翻译自: https://www.includehelp.com/embedded-system/assembly-language-program-in-8085-microprocessor-to-multiply-two-16-bit-numbers.aspx

汇编语言,两个数字的想加

汇编语言,两个数字的想加_8085微处理器中的汇编语言程序将两个16位数字相乘...相关推荐

  1. shell两个数字相乘_使用8086微处理器将两个16位数字相乘而不带进位

    shell两个数字相乘 Problem statement: 问题陈述: To perform multiplication operation between 2 16bit numbers wit ...

  2. sql 数字减去null_减去两个16位数字| 8086微处理器

    sql 数字减去null Problem: Write a program to subtract two 16-bit numbers where starting address is 2000 ...

  3. 数字图像处理图像反转的实现_使用8086微处理器反转16位数字

    数字图像处理图像反转的实现 Problem statement: 问题陈述: Write an assembly language program in 8086 microprocessor to ...

  4. 16位的数字高字节和低字节_显示掩盖较低和较高的16位数字半字节| 8086微处理器...

    16位的数字高字节和低字节 Problem: To show masking of lower and higher nibbles of 16bit number using 8086 Microp ...

  5. # 将微博地址里面的62进制字符串转换成10进制的16位数字mid

    # 将微博地址里面的62进制字符串转换成10进制的16位数字middef base62_decode(string):alphabet = "0123456789abcdefghijklmn ...

  6. js数字最多保留两位小数_8085微处理器中最多两个8位数字

    js数字最多保留两位小数 Problem statement: 问题陈述: To find maximum of two 8bit numberusing 8085 microprocessor. 使 ...

  7. 正则数字字母下划线至少两种_8085微处理器中至少两个8位数字

    正则数字字母下划线至少两种 Problem statement: 问题陈述: To find minimum of two 8bit numberusing 8085 microprocessor. ...

  8. 1补码 2补码_8085微处理器中8位数字的1和2的补码

    1补码 2补码 1的8位补码 (1's compliment of 8 bits number) Problem statement: 问题陈述: To perform 1'scompliment o ...

  9. 给定数组A []和数字X,请检查A []中是否有对X | 使用两个指针算法,O(1)空间复杂度| 套装2...

    Prerequisite: 先决条件: Hashing data structure 散列数据结构 Given an array A[] and number X, check for pair in ...

  10. 程序实训 | BigInt | 第一位数字

    题目 NGB* 魔最近一直被一个问题困扰着,就是对于一个正整数 N, 怎么得出 N^N (N 的 N 次方)的结果,现在他想请你们帮他解决这个问题,由于 N^N 太大了,你们只需要输出第一位数就可以了 ...

最新文章

  1. 在c语言中,函数中的自动变量可以赋初值,每调用一次,赋一次初值,计算机二级考试 程序设计基础试题及答案三...
  2. linux message日志只有4k,命令长期运行 常用技巧 Linux 服务器 · 404k的前后端日志...
  3. 正在使用.NET Framework 2.0 Beta 2的开发者要注意了!
  4. websocket receive方法内 有循环怎么退出_认识HTML5的WebSocket
  5. Linux-locate/slocate命令
  6. AI、ML论文网站、如何阅读论文?
  7. 关于yarn.nodemanager.vmem-pmem-ratio的通俗解释
  8. php定时某个时间循环做,PHP定时循环执行脚本
  9. 软件工程资料 - 优秀的大学怎么教程序开发和软件工程课
  10. kali修改root密码
  11. 机器学习集成模型学习——Bagging集成学习(三)
  12. 最近租房有点烦!技术人如何用Python找到称心如意的“小窝”?
  13. 为你揭秘小程序音视频背后的故事......
  14. 干货|内网渗透之端口转发端口映射
  15. 虚拟机安装win10教程
  16. 生成BMP格式图片备忘
  17. 微信小程序_页面加载不出来/页面跳转不成功的若干可能原因
  18. 记录一款绿色便携的sqlist3数据库编辑工具SQLiteSpy
  19. IDEA优化配置(6)--- 炫酷的主题字体颜色设置(基于Intellij IDEA 2018)
  20. 批量识别条形码和二维码

热门文章

  1. linux命令行连接蓝牙音箱,有些Linux发行版用蓝牙连接天猫精灵和小爱音箱没声音...
  2. 手机浏览器自动打开快应用?
  3. 豪沃轻abs12v电是什么系统_汽车中的ABS系统是什么意思?
  4. 金融×科技,成就大未来!
  5. 融新聚力,筑梦畅行|云畅科技“融云计划”第一期集训营圆满结营
  6. 跨境第三方支付有什么,怎么进行跨境支付?
  7. 服务器自动启动的原因,服务器经常自动重启是什么原因
  8. Java //PP2.14 按照以下要求修改程序Snowman: ·在其身上添加两个红色按钮。·将雪人的表情由笑脸变成皱眉。·把太阳移动到图片的右上角。·在图片左上角显示你的名字。。。
  9. 【2021年度总结】积跬步,「卷」千里,2022 继续「卷」
  10. String.Empty、string=”” 和null的区别