Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522332
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类:

2010-08-16 16:09:20

最近在学8086汇编程序 请总问可不可以用在VC用汇编写程序
如时果可以的话
怎么能?
谢谢

在VC在的嵌入汇编写法是,做一个C函数。在C函数中使用
_asm
{
  //汇编语句
  mov ax , 1
}
语法。在括号内写汇编程序。
也可以打开vc目录,找自带的例子 其中有个masm文件夹里面的就是.vc写汇编的例子
vc写汇编程序之编译器的手册
以下是一个vc在MFC项目中编写的汇编程序示例程序:

asmAppDlg.cpp

int test(void)
{

   __asm {
        mov ax, 0x0e07
        xor bx, bx
        //int 0x10         // makes the system beep
        mov eax, 1         //设函数返回值
      }     
}




void CKsdjkgDlg::OnOK()
{
    // TODO: Add extra validation here
    int  a;
    char  *s;

   s = new char[5];
    a = test();
    sprintf(s,"%d",a);

    MessageBox(s,s,NULL);

    //CDialog::OnOK();
}

c++builder里面是这样也是和vc一样写汇编程序。只是那内嵌汇编语法为
asm
{
  //汇编语句
  mov ax , 1
}  

以下是BCB中的一个内嵌汇编示例:

MastToolAppMain.cpp

int test(void)
{

  asm {
        mov ax, 0x0e07
        xor bx, bx
        //int 0x10         // makes the system beep
        mov eax, 1         //设函数返回值
      }     
}



void __fastcall TToolMainFrm::N13Click(TObject *Sender)
{
    int  a;

    a = test();

    MessageBox(NULL,IntToStr(a).c_str(),IntToStr(a).c_str(),NULL);
    //MessageBox(NULL,"dakdafs",NULL,NULL);      
}
//---------------------------------------------------------------------------

bcb写汇编程序还可以参考以下两片文章:

利用Java配合BCB 4.0制作CPU特征侦测器




CB和汇编混合编程




求救,如何使用vs2008来写汇编程序??



【话题】如何用VC写汇编程序?






阅读(749) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chulia200020012010-08-16 16:18:23

[推荐] 斑竹,高手们注意了,BCB中内联汇编的问题(147分)。 http://topic.csdn.net/t/20010601/21/143219.html 这句内嵌代码的结果是什么?[问题点数:100分,结帖人:blsmcn] http://topic.csdn.net/t/20030222/11/1454178.html

chulia200020012010-08-16 16:17:12

问题内容:BCB & VC与汇编的接口问题 # 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=1454178 # 所属论坛:汇编语言 审核组:其他开发语言 # 提问者:blsmcn 解决者:giantzz # 感谢:giantzz # 关键字: # 答案: //bcb写的 unsigned int A[256]; asm { push eax mov eax,A;这儿 mov eax,A+255;还有这儿 pop eax; } 其中mov eax,A这句,到eax中去的是A[256]的首地址,还是A[0]呢? mov eax,A+255,到eax中的是A[255]还是A[0]的地址加上255呢? --------------------------------------------------------------- 指的都是地址处的值.