| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1285 人关注过本帖
标题:[菜鸟]高级语言能内嵌汇编代码这个设计是怎么来的?
只看楼主 加入收藏
abcbuzhiming
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-9-18
收藏
 问题点数:0 回复次数:8 
[菜鸟]高级语言能内嵌汇编代码这个设计是怎么来的?
我知道C,C++,还有delphi下的pascal,都支持内联汇编,我自己学过一些汇编,知道汇编是怎么回事,但是我又一点没想明白,为什么,高级语言允许内嵌汇编代码(好像并不是所有的高级语言都支持内嵌汇编),而且所有的讲语言方面的书,从来不曾提起在这些语言中内嵌汇编代码的事情,仿佛这并不是这些语言天生就支持汇编一样,那么,到底为什么这些语言能支持内嵌汇编,他们支持的那些汇编代码和我们传统上看到的那些汇编语言有什么不同吗?
搜索更多相关主题的帖子: 语言 汇编 代码 
2008-02-18 22:22
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
C 和 C++ 都是比较底层的语言。

其它很多语言根本就不是基于硬件的。

[[it] 本帖最后由 cosdos 于 2008-2-18 22:30 编辑 [/it]]

—>〉Sun〈<—
2008-02-18 22:26
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
LS金牌了,恭喜呀.

[[it] 本帖最后由 xianshizhe111 于 2008-2-18 22:31 编辑 [/it]]
收到的鲜花
  • cosdos2008-02-18 22:55 送鲜花  3朵  
2008-02-18 22:27
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
有的时候加一个汇编的头文件就好了,让你的汇编嵌入高级语言,说到底只不过用了编译环境而已....
2008-02-18 22:31
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
[bo]以下是引用 [un]xianshizhe111[/un] 在 2008-2-18 22:27 的发言:[/bo]

LS金牌了,恭喜呀.

呵呵。

—>〉Sun〈<—
2008-02-18 22:34
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
这喜,可不能白恭哦(玩笑)
2008-02-18 22:44
liuqinglq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-2-14
收藏
得分:0 
...这

这个问题就象“为什么这个网络游戏允许使用脚本”一样
2008-02-19 09:55
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
内联汇编还是汇编.
只不过是在高阶语言内联汇编.
像一个用画点中断画一条线,如果在汇编中得用很复杂的控制语句.
而内联汇编刚可以用高阶语言的控制语句.在高阶语言里内联汇编
的主要原因是为了实现一些高阶语言不能实现功能.
如果你对C语言有一点熟悉的话就可以知当我们需要用到printf函数
时就必须include stdio.h, 如果我禁止你include用任何IO函数库
,那么你就得在C中使用汇编了,像 int 21h int 16h 这些IO中断.

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-02-20 10:15
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以前我胡乱写的一点点内联汇编代码(TC格式的)
模拟进度条(图形版):https://bbs.bccn.net/thread-193804-1-1.html


程序代码:
#include <stdio.h>
void redos();
void pause(unsigned int time);
void screen_mode(unsigned char mode);

void point(unsigned int x,
       unsigned int y,
       unsigned char colorID,
       unsigned char color
       );

void shape(unsigned int x0,
       unsigned int y0,
       unsigned int x1,
       unsigned int y1,
       unsigned char colorID,
       unsigned char color
       );

int main(void)
{
    int x,y;
    screen_mode(0x12);
    printf("\n\n");
    for(x=0; x<=500; x+=30)
    {
        shape(0,10,x,30,0,1);
        printf("%d\%\b\b\b",x/5);
        pause(1);
    }

    printf("100\%\b\b\b");
    redos();
    return 0;
}

void redos()
{
    asm mov ah,7h;
    asm int 21h;
    asm mov ah,4ch;
    asm int 21h;
}

void pause(unsigned int time)
{
    asm mov ah,0h;
    asm int 1ah;
    asm add dx,time;
    asm mov bx,dx;
label:
    asm int 1ah;
        asm cmp bx,dx;
        asm jne label;
}

void screen_mode(unsigned char mode)
{
        asm mov ah,0h;
        asm mov al,mode;
        asm int 10h;
}

void point(unsigned int x,
           unsigned int y,
           unsigned char colorID,
           unsigned char color
           )
{
        asm mov ah,0bh;
        asm mov bh,0x(colorID);
        asm mov bl,0x(color);
        asm int  10h;

        asm mov ah,0ch;
        asm mov al,0x(color);
        asm mov cx,x;
        asm mov dx,y;
        asm int 10h;
}

void shape(unsigned int x0,
           unsigned int y0,
           unsigned int x1,
           unsigned int y1,
           unsigned char colorID,
           unsigned char color
       )
{
        int i_x0, i_y0;
        for(i_x0=x0; i_x0<=x1; i_x0++)
    {
        for(i_y0=y0; i_y0<=y1; i_y0++)
        {
            point(i_x0, i_y0, colorID,color);
                }
        }
}

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-02-20 10:20
快速回复:[菜鸟]高级语言能内嵌汇编代码这个设计是怎么来的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028513 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved