宏汇编(两位数的乘法)

本人比较菜,第一次在CSDN上写博客,怕学过的东西忘记就写下了这篇关于汇编宏的使用的博客,以后还能找到。

具体题目如下:
定义宏,完成两个操作数相乘,乘积在第3个操作数中。并写一个简单的程序调用这个宏,完成2个从键盘输入数据的相乘及结果输出。

代码如下:

DATAS SEGMENT;此处输入数据段代码x db 2 dup(?) y db 2 dup(?)z dw ?mess1 db 'Please enter two double digits, each ending with enter:',0ah,0dh,'$'mess2 db 0ah,0dh,'result=$'
DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此处输入代码段代码;只能支持两位数的乘法!!!
input1 macro opr1               ;输入宏-Xmov cx,1hmov si,0h
let1:mov ah,1hint 21hcmp al,0dhje let2sub al,30hmov opr1[si],alinc sijmp let1
let2:loop let1
endm
input2 macro opr2               ;输入宏-Ymov cx,1hmov si,0h
let3:mov ah,1hint 21hcmp al,0dhje let4sub al,30hmov opr2[si],alinc sijmp let3
let4:loop let3
endm
mulxy macro op1,op2,op3         ;运算宏mov bx,0hmov al,op1[0]mov bl,op1[1]mov cl,0ahmul cladd ax,bx                    ;ax中存的是x的真值push ax                      ;x暂存起来mov ax,0hmov bx,0hmov al,op1[0]mov bl,op1[1]mov cl,0ahmul cladd ax,bx                 ;目前ax存放y的真值mov bx,0hpop bxmul bx                        ;x*y运算结果放入ax中mov z,ax
endm
output1 macro op                ;输出宏mov ax,0hmov bx,0hmov dx,0hmov cx,0hmov ax,opmov bx,0ah
let5:div bxpush dx                      ;存余数mov dx,0hinc cxcmp ax,0hjnz let5
let6:mov ah,2hpop dxadd dx,3030hint 21hloop let6
endmlea dx,mess1                ;提示信息mov ah,9hint 21hinput1 xinput2 ymulxy x,y,z                    ;结果在Z中lea dx,mess2              ;提示信息mov ah,9hint 21h;输出结果时是将运算结果除以十然后余数入栈;最后弹出余数调用dos系统2号功能依次输出结果output1 zMOV AH,4CHINT 21H
CODES ENDSEND START

PS:
2021回头来看到这篇博客,把代码拿到软件上跑了一下,发现出BUG了!
很抱歉,当初没有调试出来,但现在已经忘得差不多了(枯),本文的代码仅供参考,并非标准程序,再次对曾经看到过这篇文章的同志们表示抱歉

汇编语言两位数的乘法相关推荐

  1. 汇编语言-两位数减法(优化版)十位、个位、负数

    DATAS SEGMENT a1 db ? a2 db ? ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGM ...

  2. android简易计算器(两位数的加减乘除求余)

      该项目是两年前刚学android时,课堂上老师布置的一个作业, 要求是:能够实现两位数(正数或负数)的加减乘除以及求余的功能. 一.简易计算器界面展示 1.两位数的加法 2.两位数的减法 3.两位 ...

  3. 万能乘法速算法大全_小学生两位数乘法容易出错?只因没掌握这个“万能”速算法...

    儿童节快乐 两位数乘法,在小学阶段的数学学习当中,是经常遇到的.尤其是小学三.四年级,每当遇到这类乘法,小学生都非常容易出错,甚至一算就错. 原因是,一些比较大的两位数,在用列竖式法相乘时,会出现连续 ...

  4. 两位数乘法的速算方法(一)

    两位数乘法的速算方法(一) 一.范围 讲的是两位自然数的相乘,即如何计算ABXCD的相乘结果,例如86X32. 二.ABXCD相乘的专业说法 AB叫被乘数 CD叫乘数 三.原理 设两位数分别是10A+ ...

  5. 两位数乘法的速算方法(二)

    两位数乘法的速算方法(二) 一.被乘数首尾相同 1. 乘数首尾互补 公式推导: (10 a+a)(10b+10-b) = 100ab + 10(a x (10-b) + ab) + a(10-b) = ...

  6. 5种很牛的两位数乘法速算方法

    5种很牛的两位数乘法速算方法 第一种:十几乘以任意两位数 公式推导 (10+b)(10c+d) = 100c+10(bc+d)+bd = 10(10c+bc+d)+bd = 10( (10c+d) + ...

  7. 两位数乘法的速算方法(三)

    两位数乘法的速算方法(三) 一.速算方法总结 序号 类别 子类别 例如 应用举例 1 首位 相同 尾数互补 71X79 |(7+1)x7||1x9|=5609 2 尾数不互补 72X73 (72+3) ...

  8. 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...

    什么叫四则运算?加.减.乘.除呗.在四则运算中,如果没有括号,运算规则是先算乘.除,后算加.减. 乘法也是算术中最常见的一种运算.它是将相同的数加起来的一种快捷方式.比如说16×8=128.表示:8个 ...

  9. 2乘2数组第一维_苏教版三年级下册 第一单元“两位数乘两位数”第2课

    开发人员:汤宝玉.史启鹏.姚兰.黄莹.林芳芳     统稿:姚春香 一.    学习内容 教材第3-5页例3."试一试"和"想想做做"第1-6题. 二.学习指导 ...

最新文章

  1. 余弦相似和内积的意义? 区别
  2. 新浪微博应用 IE下面框架嵌套框架的问题解决
  3. DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?
  4. 23个经典JDK设计模式(转)
  5. 九十二、Python爬取深圳租房信息小案例
  6. Window将Redis设置为开机启动
  7. 如何做到全年配送 0 故障?盒马揭秘 12个关键技术
  8. php 超大整数计算,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...
  9. SQL Server insert的触发器
  10. weblogic下载、安装、配置
  11. hdu5294Tricks Device【最短路+网络流】
  12. DAC0832数模转换芯片介绍及使用教程
  13. Python Gstreamer播放rtsp视频(含音频)(海康IPCAM)
  14. 三天入门MySQL---DAY 1---库和表的创建、删除、更新
  15. 美容院共享系统开发|共享模式具体应该怎么去做?
  16. 51nod 1677——treecnt
  17. 北京新世纪计算机学校地,石家庄新世纪电脑学校
  18. Linux内核4.14版本——mmc core(7)——mmc core主模块(3)总线io setting相关(struct mmc_ios)
  19. ddr3写操作app_wdf_end说明
  20. [机器学习][1]--PLA算法

热门文章

  1. VUE+WebSocket实现实时推送
  2. iOS中常用的几种锁
  3. MATLAB 寻找离散点拐点
  4. 13种UML简介、工具及示例
  5. 2018年全球邮件客户端市场份额及发展趋势
  6. 鸿蒙系统编译怎样收费的,如何实现鸿蒙系统编译、烧录不跨平台的?
  7. vant上传图片压缩
  8. Logitech K380 ⌨️ + iOS 14 常用快捷键指南
  9. Python语言的2017年终总结
  10. AR其实就在我们身边