如何用汇编语言实现两个64位二进制数的相乘

2025-03-13 19:28:26
推荐回答(1个)
回答1:


        CODE  SEGMENT
              ASSUME    CS:CODE
              ORG       100H
      START:  JMP       BEGIN
           X  DQ        111111
              DQ        0           ; 增加 这个是为了左移时有空间
           Y  DQ        11111
           Z  DW        8 DUP(0)
      BEGIN:  PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES
             
              MOV       CX,64
         @0:
              SHR       WORD PTR Y+6,1
              RCR       WORD PTR Y+4,1
              RCR       WORD PTR Y+2,1
              RCR       WORD PTR Y,1
              JNC       @1
              MOV       AX,WORD PTR X
              ADD       WORD PTR Z,AX
              MOV       AX,WORD PTR X+2
              ADC       WORD PTR Z+2,AX
              MOV       AX,WORD PTR X+4
              ADC       WORD PTR Z+4,AX
              MOV       AX,WORD PTR X+6
              ADC       WORD PTR Z+6,AX
              MOV       AX,WORD PTR X+8
              ADC       WORD PTR Z+8,AX
              MOV       AX,WORD PTR X+10
              ADC       WORD PTR Z+10,AX
              MOV       AX,WORD PTR X+12
              ADC       WORD PTR Z+12,AX
              MOV       AX,WORD PTR X+14
              ADC       WORD PTR Z+14,AX
         @1:
              SHL       WORD PTR X,1
              RCL       WORD PTR X+2,1
              RCL       WORD PTR X+4,1
              RCL       WORD PTR X+6,1
              RCL       WORD PTR X+8,1
              RCL       WORD PTR X+10,1
              RCL       WORD PTR X+12,1
              RCL       WORD PTR X+14,1
              DEC       CX
              CMP       CX,0
              JE        @2
              JMP       @0
              
         @2:
              MOV       AH,4CH
              INT       21H