当前位置: 首页 > news >正文

建设网站制作实训报告冬镜seo

建设网站制作实训报告,冬镜seo,黑龙江省农业网站建设情况,宁夏建设厅网站旧版文章目录6.1 函数调用约定简介6.2 汇编语言和C语言混合编程汇编调用CC调用汇编6.3 实现打印函数流程程序编译并写入硬盘执行6.4 内联汇编简介汇编语言AT&T语法基本内联汇编扩展内联汇编6.1 函数调用约定简介 调用约定: calling conventions 调用函数时的一套约…

文章目录

  • 6.1 函数调用约定简介
  • 6.2 汇编语言和C语言混合编程
    • 汇编调用C
    • C调用汇编
  • 6.3 实现打印函数
    • 流程
    • 程序
    • 编译并写入硬盘
    • 执行
  • 6.4 内联汇编
    • 简介
    • 汇编语言AT&T语法
    • 基本内联汇编
    • 扩展内联汇编

6.1 函数调用约定简介

调用约定:
calling conventions
调用函数时的一套约定,是被调用代码的接口,如下:
1、参数的传递方式
2、参数的传递顺序
3、寄存器环境由谁保存

常见调用约定:

6.2 汇编语言和C语言混合编程

汇编调用C

汇编语言使用系统调用
例:

C调用汇编

C中使用extern关键字引入外部函数
汇编中中使用extern关键字引入外部函数
汇编中使用 .global 声明符号外部可见
汇编中使用 .type 符号名, @function 将符号声明为函数

例:

6.3 实现打印函数

流程


光标坐标读写:
第一步:
索引寄存器0x03d4指定
光标高8位:向索引寄存器写入0x0e
光标低8位:向索引寄存器写入0x0f
第二步:
数据传输
读:从数据寄存器0x03d5读取数据
写:向数据寄存器0x03d5写数据

程序

编译并写入硬盘

nasm -I OS/include/ -o OS/boot/mbr.bin OS/boot/mbr.s
nasm -I OS/include/ -o OS/boot/loader.bin OS/boot/loader.s
nasm -f elf -o OS/lib/kernel/print.o OS/lib/kernel/print.S
sudo gcc -c -m32 -I OS/lib/kernel/ -o OS/kernel/main.o OS/kernel/main.c

sudo ld -m elf_i386 -e main -Ttext 0xc0001500 -o OS/kernel.bin OS/kernel/main.o OS/lib/kernel/print.o

dd if=OS/boot/mbr.bin of=bochs/hd60M.img bs=512 count=1 seek=0 conv=notrunc
dd if=OS/boot/loader.bin of=bochs/hd60M.img bs=512 count=4 seek=1 conv=notrunc
dd if=OS/kernel.bin of=bochs/hd60M.img bs=512 count=200 seek=10 conv=notrunc

执行

./bochs/bin/bochs -f bochs/boot.disk

6.4 内联汇编

简介

内联汇编称为inline assembly,GCC支持在C代码中直接嵌入汇编代码
内联汇编格式分为两大类:
1、最简单的基本内联汇编
2、复杂一些的扩展内联汇编

汇编语言AT&T语法

与Intel对比:

寻址格式:

基本内联汇编

asm [volatile] (“assembly code”)
关键字asm:声明内联汇编表达式
可选项volatile表示该段代码无需优化

“assembly code”的规则:

例:

pusha保存寄存器环境
popa恢复寄存器环境
原因是寄存器可能之前被使用保存了内容

扩展内联汇编

在基本内联汇编中,可直接引用全局变量,但是不能进行参数传递和结果返回,所以需要对基本内联汇编进行扩展

asm [volatile] (“assembly code”:output :input :clobber/modify)
“assembly code”:同基本内联汇编
output:指定输出,格式:“操作数修饰符+类型修饰符”(C变量名)
input:指定输入,格式:“操作数修饰符+类型修饰符”(C变量名)
clobber/modify:告知编译器,上述代码修改了哪些寄存器
输入输出都可以有多个,使用逗号分隔
使用寄存器时前缀为%%,使用占位符时前缀为%
数字占位符最多只能有10个

名称占位符:

操作数修饰符:



类型修饰符:
=表示只写
+表示可读可写,该寄存器既作为输入也作为输出
&表示某一寄存器为output或者input独占

例:

在output栏目,先将in_a读入eax,最后将eax写入in_a

http://www.ysxn.cn/news/3540.html

相关文章:

  • 做调查赚钱的网站有哪些刚开的店铺怎么做推广
  • 昆山做企业网站想开广告公司怎么起步
  • 福安网站建设企业营销策略分析论文
  • 高埗镇仿做网站人力资源培训网
  • 关于网页设计的网站信息流优化师是什么
  • 婚纱摄影图片搜索引擎优化的办法有哪些
  • 淘宝客怎么建网站深圳网络推广案例
  • 网站开发公司网站模板百度联盟广告点击一次收益
  • 网站的可用性深圳关键词推广整站优化
  • 门户网站的基本功能软文推广一般发布在哪些平台
  • 双线主机可以做彩票网站吗bt磁力库
  • 网站的图片水印怎么做整合网络营销公司
  • 视频拍摄教学百度荤seo公司
  • 网站前端开发景区营销案例100例
  • 毕设给学校做网站seo关键词排名优化系统源码
  • 网站系统怎么做怎么恶意点击对手竞价
  • 电商网站建设简单代码网页软文写作技巧
  • 东莞哪些网络公司做网站比较好网络营销期末总结
  • 企业怎么建设网站首页网页优化最为重要的内容是
  • wordpress修改配置文大侠seo
  • 湖南网站制作媒体软文推广平台
  • 做信息安全的网站百度竞价推广效果好吗
  • 网站开发中间商怎么做关键词排名优化工具
  • 柳州中小企业网站建设武汉百度网站优化公司
  • 在pc端网站基础上做移动端企业网站cms
  • 做网站选什么系统seo薪酬如何
  • 做出网站网站seo报价
  • 做知识问答的网站2022最近热点事件及评述
  • 哪个网站做的最好今天的热搜榜
  • 云南电商网站建设域名查询ip地址