MOVW 和 rep
MOVW:将DS:SI的内容送至ES:DI,是复制过去,原来的代码还在。很多书用了“移”这个字,实际上是复制过去。
Linux内核中引导部分一开始有这样一段代码:
45 entry start ! 告知连接程序,程序从start 标号开始执行。
46 start:
47 mov ax,#BOOTSEG ! 将ds 段寄存器置为0×7C0;
48 mov ds,ax
49 mov ax,#INITSEG ! 将es 段寄存器置为0×9000;
50 mov es,ax
51 mov cx,#256 ! 移动计数值=256 字;
52 sub si,si ! 源地址 ds:si = 0×07C0:0×0000
53 sub di,di ! 目的地址 es:di = 0×9000:0×0000
54 rep ! 重复执行,直到cx = 0
55 movw ! 移动1 个字;
56 jmpi go,INITSEG ! 间接跳转。这里INITSEG 指出跳转到的段地址。
57 go: mov ax,cs ! 将ds、es 和ss 都置成移动后代码所在的段处(0×9000)。
! 47–56 行作用是将自身(bootsect)从目前段位置0×07c0(31k)
! 移动到0×9000(576k)处,共256 字(512 字节),然后跳转到
! 移动后代码的go 标号处,也即本程序的下一语句处。
注意,在55行执行完毕之后,0×7c00之后的512字节应当与0×9000之后的512字节一模一样。
然后看56行,这里的go是段内偏移,也就是0×39(十进制的57),而INITSEG=0×9000,所以执行这条语句是跳到0×9000:0×39也就是复制过去的第57行,这样代码就相当于在一个程序里继续执行了。
MOVW 和 rep相关推荐
- Linux 0.00简单多任务内核boot.s超详注释
;标题:简单内核引导启动程序 ;作者:黄旭冬 ;程序描述: ; 该程序首先跳到0x07c00处,这是BIOS开始时将本程序加载到的位置, ; 然后本程序将内核代码(head.s代码)加载到0x1000 ...
- 你管这叫操作系统源码(一)
文章目录 最开始的两行代码 自己给自己挪个地 做好最基础的准备工作 硬盘里其他部分也放到内存 资料 最开始的两行代码 话不多说,直奔主题.当你按下开机键的那一刻,在主板上提前写死的固件程序 BIOS ...
- R语言rep函数重复向量或者列表元素实战
R语言rep函数重复向量或者列表元素实战 目录 R语言rep函数重复向量或者列表元素实战 #基本语法 #仿真数据
- R语言:rep函数解析
函数形式:rep(x, time = , length = , each = ,) 参数说明: x:代表的是你要进行复制的对象,可以是一个向量或者是一个因子. times:代表的是复制的次数,只能为正 ...
- repne scasb + rep movsd + rep movsb 内联实现 strcat
我在前面写了两篇博客分别介绍内联实现 strlen 和 strcpy,这次介绍的 strcat 其实是 strlen + strcpy ,没什么新东西. .text:0040265A lea edi, ...
- rep movsd + rep movsb 内联实现 strcpy
下面的代码片段是一个内联的 strcpy ,not ecx 为止是计算源字符串的长度(含NULL),00402646 到 00402651 是以4字节为单位复制,最后3行是把剩下的0-3字节复制过去. ...
- 【Win32汇编】MOVS,STOS,REP 指令
MOVS MOVS 指令用于将一个内存操作数的值"复制"到另一个内存操作数,使用 MOVS 前要把目标内存的地址移入 EDI,源目标内存移入 ESI.(记忆方法:D表示destin ...
- C代码+汇编 C的 函数汇编学习分析 rep stos dword ptr [edi]
如分析有误,请在评论区中,指出 谢谢合作 主要是分析C的函数调用在汇编中的执行流程 本章主要是说一下函数调用时堆栈的变化,重点理解部分 C代码 #include"stdafx.h" ...
- R中rep函数的使用
官方帮助文档如下写的: Usage rep(x, ...)rep.int(x, times)rep_len(x, length.out) Arguments x a vector (of any mo ...
最新文章
- GCC全过程详解+剖析生成的.o文件(2)
- 在iOS中安装OpenCV
- My Lead route attach and detach issue
- .net 5 正式版_.NET 5正式版快来了
- Filecoin网络目前总质押量约为2294万枚FIL
- Markdown图片并排展示、图注对齐
- vue自定义组件递归实现树状_一道价值25k的腾讯递归组件面试题(Vue3 + TS 实现)...
- js产生两个数字之间的随机数
- 计算机网络学习(四)网络层
- 转:施炜:铁军组织是怎样炼成的?高能组织=人×管理体系×数字标准
- asterisk的sip.conf配置
- “强省会”从产业开始,长沙市智能汽车产业促进会正式授牌
- 主打python-2021年度总结-展望2022年
- background 与 background-image
- Pro Tools正确卸载姿势大全
- 产品经理vs项目经理?四类PM区别都在这里啦
- 无光照渲染shader-二次元
- AGV自动导航控制系统
- 【Linux】Linux安装nginx操作详细步骤
- 盗取QQ密码的顽固的IEXPLORE.EXE病毒