0

こんにちは、初めての投稿なのでよろしくお願いします!最終的に 2 つの数値を除算するために、シフトと減算を行うプログラムを作成する必要があります。シフト加算と乗算ができるプログラムを既に作成しました...今すぐ除算する必要があります。これは私がこれまでに持っているものです。ユーザーに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  
4

1 に答える 1

1

このようなものがうまくいくかもしれません:

; 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
于 2011-07-06T19:00:07.220 に答える