修改生产日期,修改后再次查看生产日期:
结论:不能修改,因为我们向地址C0000-FFFFF的内存单元写入数据等于改写只读存储器中的内容。
任务3:
修改内存单元:
批量填充内存单元:
修改内存单元后的效果,部分红心变为了紫色的菱形:
任务4:
填空:依次为002E、002C、002A、0028、002A、002C、002E、0030
问题1:逻辑地址:0020:30 物理地址:00230
问题2:
问题3:数据空间内的数据没有发生变化。
问题4:在改变指令的顺序后,数据空间内的数据发生了变化。
任务5:
问题1:不是单步执行完这一指令就暂停,后面的指令mov sp, 30立刻被执行。
问题2:第一处存放下一条指令的地址,第二处表明随着push执行,地址往栈顶偏移。
任务6:
程序源码:
编译、连接、运行她是task6.asm,运行结果是0123456789:
查看task6.exe的程序段前缀PSP,前两个字节是CD 20:
任务7:
补全源码:
assume cs:code code segment mov ax,cs mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,17h s: mov al,[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end
g命令运行到指定点和使用u命令反汇编0:200到复制代码长度这一段内存空间:
三、实验总结
通过这次实验,我掌握了debug、masm、link等一些工具的使用;也对一些基本的汇编指令进行了实践,得到了更加深刻的理解;同时理解了寄存器的间接寻址方式以及栈空间的应用;最后我的实践能力也在犯错与纠正的过程中得到了提高。