2011-07-06 37 views
0

嘿傢伙這是我第一次發佈,所以對我很好!我必須制定一個轉移和減少的計劃,最終將兩個數字分開。我已經制定了一個可以增加和增加的程序......只需要現在就劃分。這是我迄今爲止所擁有的。你必須用一個菜單製作一個程序,要求用戶輸入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