汇编语言实现用16位乘法指令完成32位无符号数乘法

《微型计算机原理与接口技术》实验报告
、程序设计
题目一  三十二位无符号乘法
1 设计分析:
1程序设计任务:
用十六位乘法指令完成三十二位无符号数乘法(结果64位)。
      使用远程浏览器隔离MUL指令,完成双字无符号数乘法程序,要求乘数和被
乘数从键盘输入,结果显示于屏幕上。
(2)程序设计要求:
1)从键盘输入两个乘数(十六进制)
2)结果显示于屏幕上(十六进制)
3)程序设计过程:
  1) 定义数据段用于开辟缓冲区存储输入数据、输出数据和乘积。
  2)从键盘分别输入两个八位数字符(三十二字节)存入缓冲区(分4次输入,每次输入4个字符,前两次为被乘数的高位与低位,后两次为乘数的高位与低位)
  3)对缓冲区输入的字符进行处理,让Ascal码转换为数值本身的数值。
4)把三十二位分割成两位十六位,分别对其进行十六位的乘法。
5)英联邦成员国将四个十六位乘法的乘积按照各自的位相加的最终乘积
6)对所得结果进行处理,让Ascal码转换为数值本身的数值
7)将结果向屏幕输出。
2、算法(一个框代表162进制数)
3、                  X2              X1
 
                  y2              y1
          P+6    p+4    p+2    p
4、程序流程图:
             
5、测试数据与运行结果:
输入被乘数的高位的4个字符X2:
输入被乘数的低位的4个字符X1:
输入乘数的高位的4个字符y2:
输入乘数的低位的4个字符y1:
陕西师范大学学报
运行结果:
6、程序源代码及注解:
ddata segment
x1 dw 16 dup(?)
x2 dw 16 dup(?)
y1 dw 16 dup(?)
山猪炮y2 dw 16 dup(?)
p dw 30 dup(?)
keybuf db 10 dup(?)
ddata ends                            ; 定义数据段远离伊甸园
ccode segment
      assume cs:ccode,ds:ddata
start:mov ax,ddata
      mov ds,ax
      mov dx,offset keybuf
      mov bx,dx
      mov [bx],byte ptr 9
      mov ah,0ah
      int 21h
      mov ah,[bx+2]
      mov al,[bx+3]
      shl al,4
      shr ax,4
      mov dh,al古生物化石保护条例
      mov ah,[bx+4]
      mov al,[bx+5]
      shl al,4
      shr ax,4
      mov dl,al
      mov x2,dx                        ;输入被乘数的高位的4个字符x2
      mov dx,offset keybuf
      mov bx,dx
      mov [bx],byte ptr 9
      mov ah,0ah
      int 21h
      mov ah,[bx+2]
      mov al,[bx+3]
      shl al,4
      shr ax,4
      mov dh,al
      mov ah,[bx+4]
      mov al,[bx+5]
      shl al,4
      shr ax,4
      mov dl,al
      mov x1,dx                            ; 输入被乘数的低位的4个字符x1

本文发布于:2024-09-24 10:23:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/230813.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:输入   乘法   结果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议