⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mul32b.asm

📁 两个32位无符号整数的乘积的汇编程序 注意乘法的错位相加
💻 ASM
字号:
STACK SEGMENT PARA STACK 'STACK'
          DW 100 DUP (?)
STACK ENDS
DATA SEGMENT
         ORG  0100H
         MCD1_HI DW  1234H                        ;被乘数
         MCD1_LO DW  5678H
         MCD2_HI DW  0ABCDH                       ;乘数
         MCD2_LO DW  0EF12H
         RESULT DB 8 DUP(0)                       ;结果区(低位字节在前)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MUL32B_S PROC FAR
         PUSH DS                        ;保存返回地址
         MOV  AX, 0
         PUSH AX
         MOV  AX,DATA                   ;初始化DS,ES
         MOV  DS,AX
         MOV  DX,MCD1_HI                ;DX存储被乘数的高8位
         MOV  AX,MCD1_LO                ;AX存储被乘数的低8位
         MOV  CX,MCD2_HI                ;CX存储乘数的高8位
         MOV  BX,MCD2_LO                ;DX存储乘数的低8位


         MOV  DI,OFFSET RESULT
         MOV  MCD1_HI,DX
         MOV  MCD1_LO,AX
         MUL  BX                         ;产生部分积1
         ADD  [DI],AX
         ADC  [DI+2],DX
         MOV  AX,MCD1_HI
         MUL  BX                         ;产生部分积2
         ADD  [DI+2],AX
         ADC  [DI+4],DX
         MOV  AX,MCD1_LO
         MUL  CX                         ;产生部分积3
         ADD  [DI+2],AX
         ADC  [DI+4],DX
  
         MOV  AX,MCD1_HI
         MUL  CX                         ;产生部分积4
         ADD  [DI+4],AX
         ADC  [DI+6],DX

     RET
    MUL32B_S ENDP
    CODE ENDS
    END MUL32B_S                         ;汇编结束 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -