500 anh em cho mình hỏi cái từ khóa asm trong C chuẩn để làm j vậy nếu đc ae có thể cho mình xin ví dụ để có thể hiểu rõ hơn
Cảm ơn Anh em nhiều 
Từ khóa asm trong C
chắc là hàm asm để chèn các lệnh Assembly vào chương trình C.
1 Like
Theo mình biết là asm (hay __asm, __asm__) là để chèn mã lệnh hợp ngữ vào tại chỗ đó. Cú pháp được dùng là AT&T syntax (thay vì Intel syntax khi học về hợp ngữ). Nếu bạn không phải đụng chạm gì đến kernel, vi điều khiển, low-level IO, … thì mình nghĩ không nhất thiết phải học cái này (vì mình thấy nó rất khó học).
Ví dụ đơn giản mình lấy ra từ codeproject.com dùng để tính cộng trừ nhân chia đơn giản:
#include <stdio.h>
int main() {
int arg1, arg2, add, sub, mul, quo, rem ;
printf( "Enter two integer numbers : " );
scanf( "%d%d", &arg1, &arg2 );
/* Perform Addition, Subtraction, Multiplication & Division */
__asm__ ( "addl %%ebx, %%eax;" : "=a" (add) : "a" (arg1) , "b" (arg2) );
__asm__ ( "subl %%ebx, %%eax;" : "=a" (sub) : "a" (arg1) , "b" (arg2) );
__asm__ ( "imull %%ebx, %%eax;" : "=a" (mul) : "a" (arg1) , "b" (arg2) );
printf( "%d + %d = %d\n", arg1, arg2, add );
printf( "%d - %d = %d\n", arg1, arg2, sub );
printf( "%d * %d = %d\n", arg1, arg2, mul );
return 0 ;
}
- Mình đã bỏ đi phép chia vì trên máy mình xuất hiện “floating point exception” (và mình cũng chưa biết lỗi này nên thôi để như vậy cho đơn giản :)) )
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?