- 13
- 0
- 约6.67千字
- 约 6页
- 2017-06-21 发布于河南
- 举报
嵌入C代码中的386汇编语言程序段
嵌入C代码中的386汇编语言程序段当需要在C语言的程序中嵌入一段汇编语言程序段时,可以使用gcc提供的“asm”语句功能。例如,下面这么一行代码:#define __SLOW_DOWN_IO __asm__ __volatile__(“outb %al, $0x80”)这里,暂时忽略在asm和volatile前后的两个“__”字符,这也是gcc对C语言的一种扩充,后面我们还要讲到。先来看括号里面加上了引号的汇编指令。这是一条8位输出指令,如前所述在操作符上加了后缀“b”以表示这是8位的,而0x80因为是常数,即所谓“直接操作数”,所以要加上前缀“$”,而寄存器名al也加了前缀“%”。知道了前面所讲ATT格式与Intel格式的不同,这就是一条很普通的汇编指令,很容易理解。在同一个asm语句中也可以插入多行汇编程序。就在同一个文件中,在不同的条件下,__SLOW_DOWN_IO又有不同的定义:#define __SLOW_DOWN_IO __asm__ __volatile__(“jmp 1f \nl:\tjmp 1f \n1:”)这就不怎么直观了。这里,一共插入了三行汇编语句,“\n”就是换行符,而“\t”则表示TAB符。所以gcc将之翻译成下面的格式而交给gas去汇编:jmp 1f1:jmp 1f1:这里转移指令的目标1f表示往前(f表示forward)找到第一个标号为1的那一行。
您可能关注的文档
最近下载
- 上引铜杆生产线的工频炉三相电流平衡装置.pdf VIP
- 南京市雨花台区社区工作者考试题库2024 .pdf VIP
- Y241-114封隔器设计Y241-114封隔器设计.pdf VIP
- 《GBT 22085.1-2008电子束及激光焊接接头 缺欠质量分级指南 第1部分:钢》专题研究报告.pptx VIP
- 2025南京市雨花台区雨花街道社区工作者考试真题.docx VIP
- 南京市雨花台区社区工作者考试题库2025 .pdf VIP
- [grasshopper书面教程全集百度网盘下载地址.doc VIP
- Q-CR 9208-2023铁路混凝土梁与小型构件预制梁场建设技术指南(OCR).pdf
- 2014劲歌王全球华人乐坛颁奖音乐盛典简介(1-9届)总选.ppt VIP
- 《光伏发电站安全规程》.pdf VIP
原创力文档

文档评论(0)