关于王爽老师实验实验八 (分析一个奇怪的程序)之个人解析
2012-06-24 10:09
267 查看
我是一个初学者,满打满算也就自学了一个月汇编。废话不说了,转入正题:
assume cs:code code segment mov ax,4c00h int 21h start:mov ax,0 s:nop nop mov di,offset s mov si,offset s2 mov ax,cs:[si] mov cs:[di],ax s0:jmp short s s1:mov ax,0 int 21h mov ax,0 s2:jmp short s1 nop code ends end start这个程序用debug进行跟踪调试,会发现是可以正常结束的。下面是我的跟踪调试的情况,当程序运行到
mov di,offset s mov si,offset s2 mov ax,cs:[si] mov cs:[di],ax之后是会发现地址 机器码 汇编代码
1440:0008 90 s:nop 1440:0009 90 nop
变为地址 机器代码 汇编代码1440:0008 EBF6 jmp 0000(debug中的表现形式)当程序跳转到上面这一步时,会发现它是向0000的ip跳转的,究其原因是F6是补码,转换之后是0AH(即向后跳转0AH个地址),执行这条指令时,cpu通过寻址把EBF6放入指令缓冲器中,然后ip加2变为000AH,之后ip减去相对偏移地址0AH,那么计算过之后ip就指向了0000H,之后cs:ip就指向了1440:0000的位置,即程序将执行执行
mov ax,4c00hint 21h这样程序就正常结束了。个人感觉这个程序是考察大家对”jmp指令执行时,cpu并不知道转移的目的地址“这句话的理解;也就是考察大家对转移指令原理的理解。如果我有什么说得不好,请大家订正。本文章免费,允许随意更改和转载,不必标明出处。
相关文章推荐
- 汇编语言(王爽)》(第九章、实验8分析一个奇怪的程序)学习笔记
- 王爽实验8 分析一个奇怪的程序
- <<汇编语言>>---王爽 (实验 8)分析一个奇怪的程序
- 汇编语言---王爽--实验8-分析一个奇怪的程序
- 王爽《汇编语言》第9章 实验8 分析一个奇怪的程序
- 王爽《汇编语言》实验8 分析一个奇怪的程序
- 王爽《汇编语言》实验8:分析一个奇怪的程序
- 实验8 分析一个奇怪的程序
- 汇编语言:实验8分析一个奇怪的程序
- 汇编实验八:分析一个奇怪的程序
- 小结:实验8 分析一个奇怪的程序
- 编译原理实验一:为PL/0语言编写一个词法分析程序
- 《汇编语言》王爽——一个奇怪的程序之EBF6
- 关于Android中http请求Gosn解析的一些个人见解: 首先是XML中构建布局: 在布局里面建一个listview用来展示Gson解析的字符
- 一个关于时间的故事(通过历史分析解决程序问题)
- Linux内核分析:实验七--Linux内核如何装载和启动一个可执行程序
- 关于javascript程序内存占用的一个有趣的实验
- 一个关于时间的故事(通过历史分析解决程序问题)
- 编译原理实验,实现一个代码解析程序
- 王爽汇编语言 一个奇怪的程序