Latest topics | » Hướng dẫn thao tác Số nguyên lớn! by peterdrew Thu 23 Jun 2011, 21:53
» Rèn luyện Đệ Quy với Bài tập này??? by tandunglee Sun 12 Jun 2011, 09:25
» VietPon.com -Mạng giảm giá cao cấp của Nhật chính thức ra mắt by tuquynh Wed 18 May 2011, 09:10
» Một số bài hướng dẫn về Mảng! by Tesulakata Sat 16 Apr 2011, 13:48
» PHẢN XẠ NGẪU NHIÊN LIÊN TỤC-p2 Học tiếng Nhật mới by tuquynh Fri 07 Jan 2011, 17:36
» Khuyến học mừng năm mới 2011 by tuquynh Fri 07 Jan 2011, 17:35
» Khai giảng khóa đàm thoại đặc biệt tại Top Globis by tuquynh Mon 11 Oct 2010, 20:31
» Học tiếng nhật miễn phí tại Top Globis by tuquynh Mon 11 Oct 2010, 20:31
» Học tiếng Nhật là niềm vui của bạn - Dạy tiếng Nhật là niềm tự hào của Top Globis. by tuquynh Mon 11 Oct 2010, 20:30
» Tài liệu học C++ làm game :D by peterdrew Fri 02 Jul 2010, 14:04
|
| | Inline ASM tính tổng hai số! | |
| | Tác giả | Thông điệp |
---|
peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Inline ASM tính tổng hai số! Tue 29 Jun 2010, 19:20 | |
| Việc tính tổng hai số thực bất kỳ có thể được thực hiện một cách rất nhanh chóng bằng Code sau: - Code:
-
#include <stdio.h> #include <conio.h> int main() { float a,b,tong; printf("Nhap vao so thu nhat: a= "); scanf("%f",&a); printf("Nhap vao so thu 2, b= "); scanf("%f",&b); printf("Tong cua %f va %f la %f",a+b); getch(); return 0; } Tuy nhiên thì còn có một cách mà chúng ta gọi là Inline Assembly vào code C/C++ để thực hiện được cùng mục đích trên, code sau: - Code:
-
#include <conio.h> #include <stdio.h> float a,b,tong; int main() { printf("Nhap vao so thu nhat, a= "); scanf("%f",&a); printf("Nhap vao so thu 2, b= "); scanf("%f",&b); _asm { fld a fld b fadd ST,ST(1) fstp tong fwait } printf("Tong cua %f va %f la %f",a,b,tong); getch(); return 0; }
Hy vọng các bạn có thêm một cách mới để làm việc này. Cũng xin nói với các bạn rằng: Inline ASM trong C/C++ sẽ tạo cho chương trình chạy nhanh hơn! Ok không?
Được sửa bởi peterdrew ngày Sun 19 Sep 2010, 08:03; sửa lần 4. (Reason for editing : Chỉnh sửa code!) | |
| | | peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Re: Inline ASM tính tổng hai số! Tue 29 Jun 2010, 19:24 | |
| Cũng một cách Inline kiểu khác là chúng ta xây dựng một hàm Tong trước, sau đó gọi hàm này trong code Inline; ví dụ như sau: - Code:
-
#include <iostream> #include <conio.h> using namespace std;
int Tong(int a, int b) { return (a+b); }
int main() { int retValue; _asm { push 10 push 16 call Tong add esp, 8 mov retValue, eax }
cout << "Tong cua 10+16 = " << retValue; getch(); return 0; } Chúng ta sẽ thảo luận tiếp những vấn đề này nếu các bạn muốn! | |
| | | peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Re: Inline ASM tính tổng hai số! Tue 29 Jun 2010, 19:26 | |
| Các bạn cũng có thể làm hai môdun C/C++ và môdun ASM riêng biệt, sau đó tiến hành hợp dịch, cụ thể Peter sẽ hướng dẫn sau... | |
| | | peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Re: Inline ASM tính tổng hai số! Wed 30 Jun 2010, 15:14 | |
| Thêm code này nữa: - Code:
-
#include <stdio.h> #include <conio.h>
int Cong(int x, int y) { __asm { mov eax,x; mov ebx,y; add eax,ebx; mov x,eax; } return x; }
int Tru(int x, int y) { __asm { mov eax,x; mov ebx,y; sub eax,ebx; mov x,eax; } return x; }
int Chia(int x, int y) { __asm { mov eax,x; mov ecx,y; sub edx,edx; div ecx; mov x,eax; } return x; }
int Nhan(int x, int y) { __asm { mov eax,x; mov ebx,y; mul ebx; mov x,eax; } return x; }
int main () { int func; int x,y; bool finish=false; while (finish==false) { printf("1: Cong, 2: Tru, 3: Chia, 4: Nhan\n"); printf("Lua chon:\n"); scanf("%d",&func); printf("Nhap so hang dau tien:\n"); scanf("%d",&x); printf("Nhap so hang thu hai:\n"); scanf("%d",&y); switch(func) { case 1: printf("Tong %d va %d la: ",x,y,Cong(x,y)); break; case 2: printf("Hieu %d cho %d la: ",x,y,Tru(x,y)); break; case 3: printf("Thuong nguyen %d chia %d la: ",x,y,Chia(x,y)); break; case 4: printf("Tich %d va %d la: ",x,y,Nhan(x,y)); break; } } return 0; } | |
| | | Sponsored content
| Tiêu đề: Re: Inline ASM tính tổng hai số! | |
| |
| | | | Inline ASM tính tổng hai số! | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| |