Δημοσιεύτηκε: 02 Νοέμ 2008, 10:37
- Κώδικας: Επιλογή όλων
title main
dosseg
.model small
.stack 100h
.data
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 ('$')
.code
PUBLIC _length
EXTRN _asm2pas:PROC
start:
mov ax,@data
mov ds,ax
mov ah,09h
lea dx,message1 ;emfanizei to 1 mnm
int 21h
mov ah, 0ah
lea dx, buf ;diabazei to string
int 21h
lea dx,store1 ;push store1
push dx
lea dx,store ;push store
push dx
CALL _asm2pas
mov ax, 4C00h
int 21h
;-------------------------------------------
_length proc
push bp
mov bp, sp
mov di,[bp+4]
mov bx,0
lab:
cmp cl, 0Dh
je telos
mov cl,store[bx+1]
inc bx
jmp short lab
telos:
mov ax,bx
pop bp
ret
_length endp
end start
- Κώδικας: Επιλογή όλων
/*
Assembly connection :
- calls ext ASM func "length"
- passes a string of chars
- gets the result (string's length)
*/
extern unsigned int cdecl length( char*, char );
unsigned int asm2pas( char* str, char* res ) /* public by default*/
{
unsigned int len;
int i;
len = length( str, 13 ); /* in ASM arguments are in reverse */
for ( i=0; i<len; i++ ) /* copy string */
res[i+1] = str[i];
res[0] = len;
/* PASCAL string bears length on char[0] */
return len;
}
εγω ψαχνω ενα τετοιο προγραμμα σε NASM assembly απλα αυτο που εχω σε MASM 16 bit assebly δεν ξερω να το μετατρεψω σε NASM 32 bit Assebly μηπως μπορω να το βρω απο καπου ή περιπου ενα παρομοιο προγραμμα
edit:
κατι αλλο πως γινεται να μεταγλωττισω το C προγραμμα που εχω πιο πανω για να παρω κατευθειαν των κωδικα σε γλωσσα assembly για NASM 32 bit linux?? γενικα γινεται αυτο να παρω τον κωδικα χαμηλου επιπουδου οταν εχω μεταγλωττιση τον κωδικα υψηλου επιπεδου?