Assembly 8086总成换档减法和除法

Assembly 8086总成换档减法和除法,assembly,shift,subtraction,divide,Assembly,Shift,Subtraction,Divide,嘿,伙计们,这是我第一次发帖,所以对我好一点!我必须制作一个程序,通过移位和减法最终将两个数字除法。我已经做了一个程序,可以移动加法和乘法。。。现在只需要分开。这就是我目前所拥有的。你必须制作一个带有菜单的程序,要求用户输入2个输入,然后加、减、乘、除 product_a_b proc near clc push ax push cx push bx push si push dx

嘿,伙计们,这是我第一次发帖,所以对我好一点!我必须制作一个程序,通过移位和减法最终将两个数字除法。我已经做了一个程序,可以移动加法和乘法。。。现在只需要分开。这就是我目前所拥有的。你必须制作一个带有菜单的程序,要求用户输入2个输入,然后加、减、乘、除

product_a_b proc near
        clc
        push ax 
        push cx
        push bx
        push si
        push dx 
        push di
        push bp

        mov si, 00h
        mov ax, 00h         
        mov bx, 00h
        mov dx, 00h
        mov cx, 00

        mov al, A[si]
        mov ah, A[si+1]
        mov dl, B[bx]
        mov dh, B[bx+1]

        mov bp, 10h

multiply:   TEST DX, 01B

        jz  skip             
        add  cx, ax

skip:       rcr  cx, 01
        rcr  dx, 01
        dec  bp               ; dec number
        jnz  multiply                           

        mov [di],dl
        mov [di+1],dh
        mov [di+2],cl
        mov [di+3],ch

        pop bp
        pop di                        
        pop dx
        pop si
        pop bx
        pop cx
        pop ax
        ret               
product_a_b endp               

QUOTIENT_A_B proc near
        clc
        push ax 
        push cx
        push bx
        push si
        push dx 
        push di
        push bp

        mov si, 00h
        mov ax, 00h         
        mov bx, 00h
        mov dx, 00h
        mov cx, 00

        mov dl, A[si]          ;ax = m 
        mov dh, A[si+1]
        mov al, B[bx]          ; dx = q
        mov ah, B[bx+1]        ; cx = a

        mov bp, 10h

divide:     rcl  cx, 01
        rcl  dx, 01  
        cmp  cx, dx         
        jb   div_add
        dec  bp               ; dec number
        jnz  divide                           

div_add:    add cx, dx
        jmp divide


        mov [di],dl
        mov [di+1],dh
        mov [di+2],cl
        mov [di+3],ch

        pop bp
        pop di                        
        pop dx
        pop si
        pop bx
        pop cx
        pop ax
        ret         
QUOTIENT_A_B endp  

类似的方法可能会奏效:

; divide cx by dx, leaving the quotient in cx and the remainder in ax.
         mov  ax, 0
         mov  bp, 10h
divide:  sal  cx, 1
         rcl  ax, 1
         cmp  ax, dx
         jb   smaller
         sub  ax, dx
         inc  cx
smaller: dec  bp
         jnz  divide

我不确定我是否理解问题是什么?我不知道如何使用shift和subtract进行正确的除法程序
你必须用菜单制作一个程序..
。那是你,不是我们,对吗?如果你的家庭作业需要帮助,请使用[家庭作业]标签。