Diễn Đàn Khoa học Máy tính - ĐH Công nghệ thông tin (ĐHQG TP HCM)
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn Đàn Khoa học Máy tính - ĐH Công nghệ thông tin (ĐHQG TP HCM)

KHOA HỌC MÁY TÍNH-UIT
 
Trang ChínhTrang Chính  PortalPortal  Latest imagesLatest images  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
Latest topics
» Hướng dẫn thao tác Số nguyên lớn!
Inline ASM tính tổng hai số! I_icon_minitimeby peterdrew Thu 23 Jun 2011, 21:53

» Rèn luyện Đệ Quy với Bài tập này???
Inline ASM tính tổng hai số! I_icon_minitimeby 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
Inline ASM tính tổng hai số! I_icon_minitimeby tuquynh Wed 18 May 2011, 09:10

» Một số bài hướng dẫn về Mảng!
Inline ASM tính tổng hai số! I_icon_minitimeby 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
Inline ASM tính tổng hai số! I_icon_minitimeby tuquynh Fri 07 Jan 2011, 17:36

» Khuyến học mừng năm mới 2011
Inline ASM tính tổng hai số! I_icon_minitimeby tuquynh Fri 07 Jan 2011, 17:35

» Khai giảng khóa đàm thoại đặc biệt tại Top Globis
Inline ASM tính tổng hai số! I_icon_minitimeby tuquynh Mon 11 Oct 2010, 20:31

» Học tiếng nhật miễn phí tại Top Globis
Inline ASM tính tổng hai số! I_icon_minitimeby 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.
Inline ASM tính tổng hai số! I_icon_minitimeby tuquynh Mon 11 Oct 2010, 20:30

» Tài liệu học C++ làm game :D
Inline ASM tính tổng hai số! I_icon_minitimeby peterdrew Fri 02 Jul 2010, 14:04


 

 Inline ASM tính tổng hai số!

Go down 
Tác giảThông điệp
peterdrew
Vip
Vip
peterdrew


Tổng số bài gửi : 55
Join date : 01/03/2010
Age : 41
Đến từ : Weapon Institute

Inline ASM tính tổng hai số! Empty
Bài gửiTiêu đề: Inline ASM tính tổng hai số!   Inline ASM tính tổng hai số! I_icon_minitimeTue 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!)
Về Đầu Trang Go down
http://congdongcviet.com/
peterdrew
Vip
Vip
peterdrew


Tổng số bài gửi : 55
Join date : 01/03/2010
Age : 41
Đến từ : Weapon Institute

Inline ASM tính tổng hai số! Empty
Bài gửiTiêu đề: Re: Inline ASM tính tổng hai số!   Inline ASM tính tổng hai số! I_icon_minitimeTue 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!
Về Đầu Trang Go down
http://congdongcviet.com/
peterdrew
Vip
Vip
peterdrew


Tổng số bài gửi : 55
Join date : 01/03/2010
Age : 41
Đến từ : Weapon Institute

Inline ASM tính tổng hai số! Empty
Bài gửiTiêu đề: Re: Inline ASM tính tổng hai số!   Inline ASM tính tổng hai số! I_icon_minitimeTue 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...
Về Đầu Trang Go down
http://congdongcviet.com/
peterdrew
Vip
Vip
peterdrew


Tổng số bài gửi : 55
Join date : 01/03/2010
Age : 41
Đến từ : Weapon Institute

Inline ASM tính tổng hai số! Empty
Bài gửiTiêu đề: Re: Inline ASM tính tổng hai số!   Inline ASM tính tổng hai số! I_icon_minitimeWed 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;
Về Đầu Trang Go down
http://congdongcviet.com/
Sponsored content





Inline ASM tính tổng hai số! Empty
Bài gửiTiêu đề: Re: Inline ASM tính tổng hai số!   Inline ASM tính tổng hai số! I_icon_minitime

Về Đầu Trang Go down
 
Inline ASM tính tổng hai số!
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Các bài tập tổng hợp C/C++
» Tổng Hợp Plugin Cho Photoshop.
» [Thủ thuật C] Swap thông thường và Swap Inline ASM!
» Sock!!!! Bị lừa tình
» Phương pháp tính với C++

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn Đàn Khoa học Máy tính - ĐH Công nghệ thông tin (ĐHQG TP HCM) :: LẬP TRÌNH C :: C Tổng Quát-
Chuyển đến