Προς το περιεχόμενο

Apories Dos assembly gia teleiws arxarious


saxon

Προτεινόμενες αναρτήσεις

Δημοσ.

.model small

.code

ena proc

mov ah,09

mov dx,offset tteexxtt

int 21h

int 20h

ena endp

tteexxtt db 'afto einai ena text keimeno$'

end ena

 

 

Kanwntas to parapanw compile ston tasm kai onomazontas to text.com to apotelesma tou einai:

C:\tasm>text

Ώ▐☺∟♦K☺∟♦V☺∟♦∟♦☺☺☺ ☻***************‼♣ό*R♣¶ ↑ R♣**** ♣ ═!╦

┤ ║ ═!═ afto einai

ena text keimeno

C:\tasm>

 

Ti kanw lathos kai vgainoun afta ta symvola prin to keimeno?

Epishs an kapios thymate pia einai h leitourgia tou dos gia allagh grammhs

Sto vivlio pou exw grafei oti einai h 'int 21h' me 'ah=0ah' alla gia kapion logo den doulevei

Δημοσ.

Αυτό συμβαίνει διότι δεν έχεις ακολουθήσει σωστό τρόπο δήλωσης των segments που απαρτίζουν το λογισμικό σου με αποτέλεσμα την αποτυχία του OFFSET directive.

 

Παρακάτω παραθέτω τον κώδικα σου σε λειτουργική μορφή για τον DOS TASM:

 

>
; To be assembled with DOS TASM


.8086          ;8086 CPU
.model   small ;MULTI SEGMENT EXECUTABLE
.stack         ;USE DEFAULT STACK (1024B)

.code          ;Code segment begins here

  ena proc    ;Procedure defination
     mov ah,09
     mov dx,offset TTEXT
     int 21h
     ;int 20h ;???
     ret      ;Return from procedure
  ena endp

.startup       ;Official program entry-point (generates
              ;additional startup code -see your debugger)
  
  CALL  ena      ;Call "ena" procedure

  MOV   AH,4Ch   ;Terminate application
  XOR   AL,AL    ;Indicate success (0)
  INT   21h

.data          ;Data segment
                                              
  TTEXT db 'afto einai ena text keimeno',13,10,'$'
                                        ;^LF/CR to change line & carrier
                                        ; return
end            ;Code segment finish here

 

Η αλλαγή γραμμής σε DOS γίνεται με την αποστολή των ASCII χαρακτήρων 0x13 (CR) και 0x10 (LF) στο STDOUT και η συνήθης πρακτική είναι να τους δηλώνουμε στο string που μας ενδιαφέρει πριν τον τελικό-χαρακτήρα $.

 

Υ.Γ.

Επειδή δεν ασχολούμαι ιδιαίτερα με την assembly ενδεχομένως ο κώδικας που παραθέτω να μην είναι ο καλύτερος δυνατόν, όμως στο σύστημα μου (με τον ίδιο assembler) δουλεύει σωστά..

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...