汇编语言的512位乘法

时间:2015-02-25 14:54:54

标签: assembly

这是我的代码,我收到两个错误。我是初学者,所以请帮帮我。这是我的代码。

org 100h

jmp start

num1: dw 15
num2: dw 7
result: dw 0000
temp: dw 0000 

start:  xor ax,ax
    mov cx,64
    xor bx,bx
here:   mov [result+bx],ax
    add bx,2
    loop here

    mov cx,32
    xor bx,bx
here1:  mov ax,[bx+num1]
    mov [temp+bx],ax
    add bx,2
    loop here1

    xor ax,ax
    mov cx,32
here2:  mov [temp+bx],ax
    add bx,2
    loop here2

    mov cx,32
there:  push cx
    mov cx,32
    mov bx,32
    clc
here3:  rcr [num2+bx]
    dec bx
    dec bx
    loop here3
    jnc skipadd

    xor bx,bx
    mov cx,64
    clc
here4:  mov ax,[temp+bx]
    adc [result+bx],ax
    inc bx
    inc bx
    loop here4

skipadd:xor bx,bx
    mov cx,64
    clc
here5:  rcl [temp+bx]
    inc bx
    inc bx
    loop here5

    pop ax,
    loop there

    mov ax,4c00h
    int 21h

1 个答案:

答案 0 :(得分:1)

此代码正在覆盖程序!!!

num1: dw 15
num2: dw 7
result: dw 0000
temp: dw 0000 

start:  xor ax,ax
    mov cx,64
    xor bx,bx
here:   mov [result+bx],ax
    add bx,2
    loop here

您需要更改结果 temp 的定义以允许64个字。

result: dw 64 dup (0)
temp:   dw 64 dup (0)

您正在使用以下

复制垃圾
    mov cx,32
    xor bx,bx
here1:  mov ax,[bx+num1]
    mov [temp+bx],ax
    add bx,2
    loop here1

更好地使用

    mov cx,32
    xor bx,bx
    mov ax,[bx+num1]
here1:  mov [temp+bx],ax
    add bx,2
    loop here1