实验1 8086汇编指令编码和调试
任务二:
使用d命令查看,生产日期为:01/01/92
使用e命令修改:
再次使用d命令查看修改是否成功,未成功
原因:8086中,地址C0000~FFFFF映射的是只读(ROM)存储空间,其中数据无法被修改。
任务三:
d命令效果:
f命令效果:
尝试修改内存中的数据(横线变为绿色)
任务四
1.填空
push [0] ; 执行后,寄存器(sp) = __2e__
push [2] ; 执行后,寄存器(sp) = __2c__
push [4] ; 执行后,寄存器(sp) = __2a__
push [6] ; 执行后,寄存器(sp) = __28__
pop [6] ; 执行后,寄存器(sp) = __2a__
pop [4] ; 执行后,寄存器(sp) = __2c__
pop [2] ; 执行后,寄存器(sp) = __2e__
pop [0] ; 执行后,寄存器(sp) = __30__
问题一:
逻辑地址:20:30 物理地址:00230H
程序:
问题二:
问题三:
没有变化
问题四:
有变化
程序:
数据输出
任务五
问题1:执行完 mov ss,ax 后紧跟着执行了mov sp,30
问题2:t命令的单步调试是通过中断机制实现,内存中的变化是因为写入了中断信息
任务六:
源代码:
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
汇编,链接过程:
运行结果:
debug中查看task5.exe的程序段前缀PSP的截图:
任务七:
源代码:
assume cs:code code segment mov ax,cs mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,23 s: mov al,[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end
第一空:cs,是程序段起始地址
第二空:23
看反汇编结果可知,要求复制的程序从076a:0000到076a:0016,占17h(23)个字节,且复制以字节为单位,所以填23
源代码已被正确复制