实验1
实验任务2
1.使用d命令查看生产时期的截图
2.使用e命令修改生产时期所在的内存单元,修改后再次使用d命令查看截图
结论:生产时期所在的内存单元并没有被改变,即e命令不能修改该内存单元内容。因为这段内存只读,不能修改。
实验任务3
1.使用e命令修改内存单元命令即截图
-e b800:0 03 04 03 04 03 04 03 04 03 04
2.使用f命令批量填充内存单元的命令及截图
-f b800:0f00 0f9f 03 04
3.尝试修改内存单元或数据后的效果截图
修改后使用d命令查看时要指定起始位置。
实验任务4
填空:2E,2C,2A,28,2A,2C,2E,30
1.指令mov ss,ax和mov sp,30执行后,栈顶逻辑地址和物理地址分别是?
答:逻辑地址是20:30,物理地址是00230H
2.单步调试到push [6]执行结束,pop[6]执行之前,使用d 20:20 2f查看栈空间数据。
3.pop[0]执行结束后,使用d 20:0 7查看数据空间内的数据是否有变化。
4.pop[6]执行结束后,使用d 20:0 7查看数据空间内的数据是否有变化。
实验任务5
1.指令mov sp,30是什么时候执行的?
答:t命令在执行修改寄存器ss的指令时,下一条指令也跟着执行。mov sp,30在下一次使用t命令时执行。
2.观察单步调试时,栈空间00220H~0022fH内存单元值的变化。
0022AH~0022DH是内存空间。
实验任务6:
1.程序源码
assume cd:code code segment start: mov cx,10 mov dl,'0' s:mov ah,2 int 21h add dl,1 loop s mov ah,4ch int 21h code ends end start
2.给出使用masm,link对程序汇编连接的截图,以及运行可执行程序task6.exe的运行结果截图
3.在debug中查看task6.exe的程序段前缀PSP的截图
实验任务7
1.给出补全的代码。
assume cd:code code segment start: mov ax,cs mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,0017h s:mov al,[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end start
因为复制line3~line12的代码,即从开始复制程序,cs:ip指向第一条程序,所以将cs的值赋给段寄存器ds。除最后两条指令外,其余指令长度17h字节,因此循环17h次。
2.使用g命令运行到指定点,使用u命令进行反汇编