Δημοσιεύτηκε: 21 Οκτ 2008, 18:51
από thodoris_turtle
Κώδικας: Επιλογή όλων



SECTION .data ;data section.





nl db 10,13,'$'

message1 db 'Please enter a string: $'



buf db 20

actlen db ?

store db 20 dup ('$')



buf1 db 20

actlen1 db ?

store1 db 20 dup ('$')





SECTION .text ;code section.

global main

main:





PUBLIC _length

EXTRN _asm2pas:PROC





mov eax,@data

mov eds,eax





mov eah,09h

lea edx,message1 ;emfanizei to 1 mnm

int 21h



mov eah,0eah

lea edx,buf ;diabazei to string

int 21h







lea edx,store1 ;push store1

push edx





lea edx,store ;push store

push edx











CALL _asm2pas



mov eax, 4C00h

int 21h



;-------------------------------------------





_length proc





push ebp

mov ebp,esp





mov edi,[ebp+4]

mov ebx,0







lab:

cmp ecl,0Dh

je telos



mov ecl,store[ebx+1]

inc ebx



jmp short lab



telos:



mov eax,ebx



pop ebp





ret

_length endp













κοιταξτε δεν εχω δουλεψει ποτε σε X86 nasm 32 bit γι αυτο ο κωδικας μου εχει πολλα λαθη

τι πρεπει να τροποποιησω στις εντολες ετσι ωστε να ειναι σωστω το προγραμμα μου

ξερω το βασικο οτι οι καταχωρητες γενικου σκοπου ax,bx,cx,dx απο 16 bit για 32 bit ειναι eax,ebx,ecx,edx

πως γινεται να παρω το μισω του eax οπως γινοταν σε 16 bit δηλ. ah ή al για τον ax σε 16bit

για 32 bit πως γινεται αυτο?

γι αυτο μπερδευομαι γιατι δεν ξερω τα βασικα αμα μπορει καποιος να με καθοδηγηση λιγακι

σας ευχαριστω πολυ