Αριθμητικές πράξεις ( + - * / ) σε emulator 8086

συζητήσεις για assembly

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
coyote44
Δημοσιεύσεις: 2
Εγγραφή: 22 Μάιος 2010 19:44

Αριθμητικές πράξεις ( + - * / ) σε emulator 8086

Δημοσίευση από coyote44 » 22 Μάιος 2010 20:08

Καλησπέρα! Έχω ένα project όπου βάλω δύο 8bit αριθμούς σε δύο θέσεις μνήμης. Έπειτα θέλω να κάνω τις αριθμητικές πράξεις ( + - * / )... Για κάθε πράξη πρέπει να καλώ μία υπορουτίνα. Θέλω μια βοήθεια σχετικά με αυτό...Έχω γράψει την υπορουτίνα παράδειγμα για το + .... αλλά δεν βγάζει το αποτέλεσμα.. Ο κώδικας είναι ο εξής:

Κώδικας: Επιλογή όλων

cmp cx,02
call prosthesi
hlt

prosthesi proc    ;υπορουτίνα
mov [200h],dl
ADC [200h],dh
mov ax,[200h]
call print_num		;tupwse arithmo sto ax
ret
prosthesi endp
Συγκρίνω τον καταχωρητή CX αν είναι 2..αν ναι τότε καλείτε η υπορουτίνα.. Βάζω στη θέση μνήμης [200h] τον DL που έχει τον πρώτο 8bit αριθμό και έπειτα κάνω την πράξη ADC με τον καταχωρητή DH που έχει τον δεύτερο 8bit αριθμό
(να πω επίσης ότι το αποτέλεσμα πρέπει να αναγκαστικά να μπει στον AX)
Παραδίδω αυτό το project την Πέμπτη, οπότε οποιαδήποτε βοήθεια θα είναι χρήσιμη!!!!
Ευχαριστώ για τον χρόνο σας!

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

Αριθμητικές πράξεις ( + - * / ) σε emulator 8086

Δημοσίευση από LightForce » 23 Μάιος 2010 19:14

Γεια,

Η cmp θέλει άλμα μετά, εντολή jxx (ja jb je ...)

Δοκίμασε και αυτό.

Κώδικας: Επιλογή όλων

include "emu8086.inc"  
   
org 100h
          
mov ah,0
mov al,n1
mov bl,n2
add al,bl
adc ah,0
mov sum,ax
call print_num_uns
mov ah,4ch
int 21h 
ret      

n1 db 20
n2 db 10
sum dw ?
 
DEFINE_PRINT_NUM_UNS
end

Απάντηση

Επιστροφή στο “Assembly”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης