Άσκηση σε Assembly 8086

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

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

Απάντηση
seleo
Δημοσιεύσεις: 72
Εγγραφή: 10 Σεπ 2005 01:05
Επικοινωνία:

Άσκηση σε Assembly 8086

Δημοσίευση από seleo » 13 Μάιος 2010 20:01

Καλησπέρα.

Ετοιμάζω το project που έχω να κάνω σε assembly 8086 και έχω κολλήσει.

Θέλω να εμφανίζεται ένα μήνυμα πχ. "Δώσε τον 1ο αριθμό" και να το αποθηκεύει σε ένα καταχωρητή.
Πάνω κάτω κατάλαβα τι πρέπει να γράψω αλλά δεν το έχω ξεκαθαρίσει τελείως.

Νομίζω θα πρέπει να είναι της μορφής:

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

LEA DX, MSG1
MOV AX,09
INT 21

MSG1 DB 'Dwse ton 1o ari8mo' ,13,10, '$'
Αν μπορεί να μου εξηγήσει την διαδικασία θα με βοηθήσει πολύ.

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

Άσκηση σε Assembly 8086

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

hi seleo,

H συνάρτηση INT 21h / AH=9 τυπώνει το string που τερματίζει -σωστά- με '$' και έχει διεύθυνση σε DS:DX


Έβαλες στον AL την τιμή 9 ενώ χρειάζεται τον AH

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

MOV AX,09
Η διακοπή είναι δεκαεξαδικό 0x21 (33) και όχι 21

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

INT 21

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

; EMU8086 syntax

ORG 100H

LEA DX, MSG1
MOV AH, 09h
INT 21h

; code
;
;

INT 20h    ; exit to OS

MSG1 DB 'Dwse ton 1o ari8mo' ,13,10, '$' 

seleo
Δημοσιεύσεις: 72
Εγγραφή: 10 Σεπ 2005 01:05
Επικοινωνία:

Άσκηση σε Assembly 8086

Δημοσίευση από seleo » 14 Μάιος 2010 01:48

Ευχαριστω για την απαντηση. Αρχιζω και μπαινω στο νοημα (νομιζω).

Το δοκιμασα στα γρηγορα τον παραπανω κωδικα μεσω του emulator "emu8086" και μου εμφανισε "INT 21h, AH=09h - string has no $ at the end, or out of memory".

Και το $ έχω μεσα, και δε νομίζω να είναι out of memory. Που μπορεί να θίχτηκε?

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

Άσκηση σε Assembly 8086

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

Καλημέρα,

Επέλεξε New->Empty Workspace, και κάνε copy-paste τον κώδικα, το τελευταίο κομμάτι όπως είναι.

Πάτησε Emulate->Run

seleo
Δημοσιεύσεις: 72
Εγγραφή: 10 Σεπ 2005 01:05
Επικοινωνία:

Άσκηση σε Assembly 8086

Δημοσίευση από seleo » 15 Μάιος 2010 08:10

Το δοκίμασα και έβγαλε πάλι το ίδιο. Βρήκα όμως άλλο τρόπο πιο εύκολο οποτε ΟΚ.

Κόλλησα σε ένα άλλο σημείο τώρα.

Έχω το Α στον BX και τον Β στον DX. Πως θα πραγματοποιήσω την πράξη X=-B/A?
Δοκίμασα διάφορα αλλά μου έβγαζε πάντα "DIVIDE ERROR" στην οθόνη του emu8086.
Έχω μπερδευτεί λίγο με την IDIV.

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

Άσκηση σε Assembly 8086

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

Δες τι αναφέρει το documentation για την εντολή IDIV, αν πάλι δεν βρείς λύση πόσταρε τον κωδικά σου seleo.

Απάντηση

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

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

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