用内存0:0~0:15单元中的内容改写程序中的数据
答案:1 悬赏:10 手机版
解决时间 2021-11-26 01:01
- 提问者网友:自食苦果
- 2021-11-25 10:28
用内存0:0~0:15单元中的内容改写程序中的数据
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-11-25 11:10
mov指令,不是累加,而是传送。
程序把数据段0:0~0:15单元中的内容逐字(双字节)读出,然后写到代码段对应的偏移位置,从而达到改写程序中数据的目的。
根据原程序设计思路,所填指令必须是:mov cs:[bx],ax。
指令mov ax,[bx] 从数据段读出一个字,
指令mov cs:[bx],ax把这个字写到代码段对应的偏移位置
mov cs:[bx],ax的目的操作数是基址寻址,默认的段寄存器是数据段寄存器,若要写到其它段,必须加段寄存器前缀。因为要把数据写到代码段,所以,必须在目的操作数前面加上代码段寄存器前缀。
但,这段程序未等执行完毕就会产生不可预料的结果。因为程序主题指令很短,未等执行完毕,就被改写,继而导致结果不可预料。
程序把数据段0:0~0:15单元中的内容逐字(双字节)读出,然后写到代码段对应的偏移位置,从而达到改写程序中数据的目的。
根据原程序设计思路,所填指令必须是:mov cs:[bx],ax。
指令mov ax,[bx] 从数据段读出一个字,
指令mov cs:[bx],ax把这个字写到代码段对应的偏移位置
mov cs:[bx],ax的目的操作数是基址寻址,默认的段寄存器是数据段寄存器,若要写到其它段,必须加段寄存器前缀。因为要把数据写到代码段,所以,必须在目的操作数前面加上代码段寄存器前缀。
但,这段程序未等执行完毕就会产生不可预料的结果。因为程序主题指令很短,未等执行完毕,就被改写,继而导致结果不可预料。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯