90 likes | 187 Views
Assembly For X86. Chapter 5 Inline Assembly. C & Assembly. ניתן לשלב קוד C וקוד אסמבלי בתוכנית אחת באמצעות מספר קבצים (כל קובץ בשפה מסויימת) באמצעות הוראות למהדר: asm mov ax,bx asm{ mov ax,bx inc cx }. int add(int a,int b) { asm { mov ax,a add ax,b } }.
E N D
Assembly For X86 Chapter 5 Inline Assembly
C & Assembly • ניתן לשלב קוד C וקוד אסמבלי בתוכנית אחת • באמצעות מספר קבצים (כל קובץ בשפה מסויימת) • באמצעות הוראות למהדר: • asm mov ax,bx • asm{ mov ax,bx inc cx }
int add(int a,int b) { asm { mov ax,a add ax,b } }
int max(int a,int b) { asm{ mov ax,a cmp ax,b jg end mov ax,b } end: }
int sum(int num[],int size) { asm { mov si,num mov cx,size mov ax,0 } cnt: asm { add ax,[si] add si,2 loop cnt } }
void swap(int *x,int *y) { asm { mov si,x mov di,y mov al,[si] mov ah,[di] mov [si],ah mov [di],al } }
void mem_set(char *str,char c,int size) { asm{ mov al,c mov bx,str mov cx,size } LP1: asm{ mov [bx],al inc bx dec cx jnz LP1 } }
int count_char(char *str,char c,int size) { asm { mov al,0 mov bx,str mov cx,size } check: asm { mov ah,[bx] cmp ah,c jne cont inc al } cont: asm { inc bx loop check mov ah,0 } }
int check_sort(int n[],int size) { asm { mov si,n mov cx,size dec cx } chk: asm { mov dx,[si] cmp dx,[si+2] jg bad add si,2 loop chk jmp good } bad: asm { mov ax,0 jmp end } good: asm mov ax,0ffh end: }