实验1 8086汇编指令编码和调试
四、实验结论
2.实验任务2
使用d命令查看生产时期的截图:
出使用e命令修改生产日期所在内存单元的截图:
修改后,再次使用d命令查看的截图:
结论:在每一块的主板的ROM,都有一个它的生产日期,这个是不可以改变的,因为Rom本身就是一个不能修改的内存。
3.实验任务3
在debug中使用e命令修改内存单元的命令,及,效果截图:
在debug中使用f命令批量填充内存单元的命令,及,效果截图:
尝试修改内存单元后效果截图:
尝试修改数据后的效果截图:

4 .实验任务4
问题一:逻辑地址SS:SP 物理地址:00230H
问题二:

问题三:

问题四:

5 .实验任务5
问题一:不是,由截图可知,在单步调试的过程中,执行完mov ss,ax指令后,直接跳到了mov ax,2010指令,即同时完成了mov sp,30指令。
问题二:


实验结果中,内存中的的数据与cs:ip所指的单元地址相同,猜测是在t命令执行过后,该段内存单元会用来存放所指指令地址,导致栈内存单元中的数据发生改变。
6.实验任务6
程序源码:
assume cs: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
使用masm、link对程序汇编链接过程截图,以及,运行可执行程序task5.exe的运行结果截图:


该程序实现了依次顺序输出0-9十个数字。
在debug中查看e1t6.exe的程序段前缀PSP的截图

7.实验任务7
补全后的完整源码:
assume cs:code code segment 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
第一空:程序加载到内存中时,cs:ip会初始化为程序的首个地址,而作为程序段的段首,ip为0,所以通过ax将cs的值赋值给ds。
第二空:该程序从076C:0000开始,到076C:001B结束,共001CH个字节,最后一条需要复制的代码占的内存单元为0015H和0016H,所以长度为0017H。
使用g命令运行到指定点截图:
使用u命令反汇编0:200到复制代码长度这一段内存空间的截图:


浙公网安备 33010602011771号