完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
转移指令的原理
段内转移:只修改IP,如:jmp ax 短转移:IP地址修改范围 -128 ~ 127 近转移:IP地址修改范围 -32768 ~ 32767段间转移:同时修改CS和IP,如:jmp 1000:0转移指令分类: 无条件转移指令 条件转移指令 循环指令 过程 中断 操作符offset 取得标号的偏移地址,由编译器处理assume cs:codesg codesg segment start:mov ax,offset start s: mov ax, offset s codesg endsend startoffset取得start和s的偏移地址0和3 jmp指令 可以只修改IP,也可以同时修改CS和IPjmp需给出的信息 转移的目的地址 转移到距离(段间转移、段内短转移、段内近转移) 依据位移进行转移的jmp指令 jmp short 标号(转到标号处执行指令),段内短转移向前可以越过128字节,向后可以越过127字节assume cs:codesgcodesg segment start: mov ax,0 jmp short s add ax,1 s: inc ax codesg endsend start jmp short s指令越过了add ax,1jmp near ptr 标号(转到标号处执行指令),段内短转移向前可以越过32768字节,向后可以越过32767字节 转移的目的地址在指令中的jmp指令 段间转移:jmp far ptr 标号,指明了用标号的段地址和偏移地址修改CS和IP(CS) = 标号所在段的段地址(IP) = 标号在段中的偏移地址 转移地址在寄存器中的jmp指令 指令格式: jmp 16位寄存器功能:(IP)=(16位寄存器) 转移地址在内存中的jmp指令 段内转移:jmp word ptr 内存单元地址(段内转移)功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址段间转移:jmp dword ptr 内存单元地址(段间转移)功能:从内存单元地址处存放两个字,IP = (内存单元地址),CS = (内存单元地址 + 2) jcxz指令 jcxz = if((cx) == 0) jump short 标号 loop指令 loop=(cx)--;if((cx) != 0){ jmp short 标号} 根据唯一进行转移的意义 编译器对转移位移超界的监测 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:08 , Processed in 1.153319 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号