汇编实验报告四

(1)
源代码:

Debug调试:

运行:

修改后:

(2)
源代码:

Debug调试:


g 命令和 d 命令,确实将0~63传送此段内存区域

(3)
源代码:

g 命令和d 命令,结果是对的(内存中的和上面反汇编出来的一样)







(t命令调试 只截图了部分,太多了……)

分析:
1.每一条指令都有对应的编码来实现,他们在内存中存入的是这条指令对应的编码。
正是因为编码不同,所以导致了每一条指令对应的IP不同,我以前对IP变化的问题,在这里也可以体现。比如 mov ax, 0123h 在内存中是 B8 23 01 , 而 mov ax, bx 对应的是89 D8, 所以,复制指令,也就是复制指令对应的编码。
2.指令是在CS:IP中的,而我们处理的往往是DS以及他对应的偏移地址,这里也要注意, 这题就需要CS,因为正好要复制指令,我们需要的是CS也就是指令所在的内存位置,将CS给AX 从而给DS(不能直接赋值DS)以便于后面的处理,所以 第一处填CS。
3. 和第一点结合来看,第二处需要的是循环次数,而循环体中每次只存入一个字节,所以要计算所有指令的字节数,如果不会计算,可以先随便填一个在反汇编,通过反汇编观察指令对应的字节数即可。两种我都试过,结果都是23.。所以第二处填23。

posted @ 2018-12-15 15:46  花逢君  阅读(123)  评论(0编辑  收藏  举报