怎么用ftp清空网站,wordpress 文章点赞功能,怀柔重庆网站建设,如何创立自己的品牌【-1】写在前面
以下内容文字描述来自于 王爽老师的《汇编语言》教材#xff0c;建议大家都买一本#xff0c;哈哈。不是我打广告#xff0c;确实人家写的好#xff0c;应该支持。我只是附上了自己的图片和理解而已。
【0】先上干货
只修改ip#xff0c;称为段内转移建议大家都买一本哈哈。不是我打广告确实人家写的好应该支持。我只是附上了自己的图片和理解而已。
【0】先上干货
只修改ip称为段内转移如jmp ax 修改cs和ip称为段间转移如 jmp 1000:0
【1】分类
转移指令分为 无条件转移如jmp 条件转移 循环指令 loop 过程 中断
【2】我们的jmp
2.1 jmp short 标号转到标号处执行指令
对ip的修改范围在-128~127
[attention] : cpu在执行jmp指令时并不需要转移的目的地址 而是包含转移的位移
2.2 jmp near ptr 标号
它实现的是段内近转移 只不过对ip的修改范围在 -32768~32767;
2.3jmp far ptr 标号
它实现的是段间转移又称远转移 far ptr 指明了指令用标号的段地址和偏移地址修改cs和ip
2.4转移地址在内存中
2.4.1jmp word ptr 内存单元地址段内转移 function从内存单元地址处开始存放一个字是转移的目的偏移地址 如 mov ax,0123h
mov [bx], ax
jmp word ptr [bx]
执行后 (ip) 0123h2.4.2jmp dword ptr 内存单元地址段间转移 功能内存中存放两个字高地址处的字存放转移的目的段地址低地址处存放目的偏移地址 cs 内存单元地址 2 ip 内存单元地址 如 mov ax,0123h
mov ds:[0], ax
mov word ptr ds:[2],0
jmp dword ptr ds:[0]
执行后 cs 0 ip 0123h 。[Complementary] MOV AX, WORD PTR [BX] ; 要有逗号 将DS:BX指向的内存地址中的16位数读到AX里面。 MOV是数值传送指令AX是目的操作数WORD PTR表示后面的储存单元是字类型[BX]表示用BX的值来寻址默认段地址是DS的值。
【3】我们的call
3.0谈谈ret和retf
3.0.1执行ret 相当于执行 (ip) (ss) * 16 (sp);
(sp (sp) 2;
3.0.2执行retf 相当于执行 (ip) (ss) * 16 (sp) ;
(sp (sp) 2 ;
cs ss * 16 sp ;
sp sp 2 ;
3.0.3执行ret相当于执行 pop IP 3.0.4执行retf相当于执行 pop IP pop CS 所以retf 返回的时候要先将cs压栈
3.1依据位移进行转移的call 指令
相当于——将当前的IP或CS和IP压入栈然后转移 call指令除了不能实现短转移之外其他和jmp相同
3.1.1cpu执行call时相当于进行 push ip
jmp near ptr 标号
3.1.2also 相当于 sp sp - 2
ss *
ip ip 16位位移3.2转移的目的地址在指令中的call指令
call far ptr 标号实现的是段间转移3.2.1cpu 执行call far ptr 标号时相当于进行 push cs
push ip
jmp far ptr 标号
3.2.2also 相当于 sp sp - 2
ss * 16 sp cs
sp sp - 2
ss * 16 sp ip
cs 段基地址
ip 偏移地址3.3转移地址在register中的call指令
指令格式call 16为reg 功能
sp sp -2
ss * 16 sp ip
ip 16位regalso 相当于
push ip
jmp 16位reg3.4转移地址在内存中的call指令
3.4.1call word ptr 内存单元地址 相当于 push ip
jmp word ptr 内存单元地址
3.4.2call dword ptr 内存单元地址 相当于 push cs
push ip
jmp dword ptr 内存单元地址