2013-02-25 75 views
0

有誰知道在8位/ 16位操作數的單個程序中,如何執行全部四種數學運算(乘法,除法,加法和加法)。我能夠使用AL,BL,CL,DL寄存器執行最多三個程序,但是我無法理解後面應該存儲值的位置,因爲對於DIV,MUL操作都需要AL。同一彙編語言程序中的乘法,除法,減法和加法

如果任何人至少可以想出一個簡單的程序或邏輯,那麼我們應該理解所有的努力。

代碼:

;================== Header ================== 
; File:   all.asm 
; Author:  Anurag Shukla 
; Date:   25/02/2013 
;================== Directives ================== 

[BITS 16H] 
[ORG 100H] 

;================== Code Segment ================== 
[SECTION .text] 

mov al,0 
mov bl,0 
mov cl,0 
mov dl,0 
mov si,0 
mov di,0 
;================== Addition 
mov bp, 10H 
add bp, [NUMADD] 
daa 

mov di, 20H 
sub di, [NUMSUB] 
das 

mov al, 10H 
mov bl, 10H 
mul bl 
mov [RMUL],al 
mov dl,[RMUL] 

mov al, 10H 
mov bl, 2H 
div bl 


int3 


[SECTION .DATA] 

NUMADD: DB 10H 
NUMSUB: DB 10H 
RSUB: DB 0H 
RSUM: DB 0H 
RMUL: DB 0H 
RDIV: DB 0H 
+0

發佈你到目前爲止 – 2013-02-25 14:43:22

+0

檢查更新的查詢 – 2013-02-25 14:48:05

+0

任何人??????請幫忙 – 2013-02-25 15:13:46

回答

1

您可以保存在棧或某種緩衝的中間結果。

如果你死了只使用寄存器,你仍然有ECXESIEDIEBP(和ESP在特殊情況下),方便而最終使用EAXEDXEBX作爲所需操作的輸入和輸出。

例如,如果你想按順序執行它們後都四個運算的結果,你可以存儲EAX + EBXECXEAX - EBXEBPEAX X EBX in ESI:EDI並簡單地保持EAX/EBX in EDX:EAX

無論如何,內存是爲了存儲數據的目的,所以我建議堅持下去。