首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

王爽 编译语言第二版 实验8 代码详细分析

2012-10-16 
王爽 汇编语言第二版 实验8 代码详细分析代码在debug中对应机器指令如下:assume cs:codesg实验8主要考察

王爽 汇编语言第二版 实验8 代码详细分析

代码在debug中对应机器指令如下:

assume cs:codesg         ;实验8主要考察对jmp本质含义的理解:跳转相对位移codesg segmentmov ax,4c00hint 21hstart:      ;程序入口处mov ax,0s:nop      ;nop指令占一个字节nopmov di,offset s         ;di 指向标号s的偏移地址mov si,offset s2;si 指向标号s2的偏移地址mov ax,cs:[si];将CS:[SI]即s2处的指令存储到ax中 ,也就是jmp  short s1,就我这次运行过程而言,对应机器指令:EBF6,;机器指令EBF6解释:EB即jmp,F6(1111 0110 )最高位为1,表示往回跳,;(看s1发现,实际就是往前跳两条mov指令+一条int 21h指令),mov cs:[di],ax;将ax处存储的指令EBF6存储到cs:[di]即标号s的起始处,覆盖掉两个nop(两个字节),;需要明白EBF6的本质含义是往回前跳三条指令(两条mov+ 一条int),而不是如s2中表面显示的jmp s1,;实际这时是jmp到 codesg 段的起始处:mov ax,4c00hs0:jmp short s       ;至此,跳回s,首先执行s起始处的EBF6,程序往前跳三条指令,依次执行mov ax,4c00h  int 21h,程序正常结束,退出s1:mov ax,0int 21hmov ax,0s2:jmp short s1nopcodesg endsend start


热点排行