2011-07-06 14 views
0

こんにちは、これは私の最初の投稿ですので、私に素敵です!最終的に2つの数値を分けるために、シフトと減算を行うプログラムを作成する必要があります。私はすでに追加と乗算をシフトできるプログラムを作っています...ただ今分ける必要があります。これは私がこれまで持っていたものです。ユーザーは2つの入力を求めてから、それを加算、減算、乗算して除算するメニューを使ってプログラムを作成する必要があります。8086アセンブリシフト減算と除算

このような何かが動作する可能性があり
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 
+0

私は質問が何であるかを理解していませんか? – aardvarkk

+0

シフトを使って適切な除算を行う方法を知りません。 – Caliendo55

+0

「メニューを使ってプログラムを作成する必要があります。それはあなたじゃなく、私たちじゃない?宿題に助けが必要な場合は、[宿題]タグを使用してください。 –

答えて

0

; 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