①在debug中,使用d命令查看生产日期。
②使用e命令修改生产时期所在的内存单元,修改后,再次使用d命令查看
分析:命令之后并没有修改对应的值。因为该区域为只读。
①在debug中,使用e命令,向内存单元填写数据。在debug中,使用f命令,向内存单元批量填写数据。
②尝试修改内存的数据。
①在debug环境中,按顺序录入内容,单步跟踪调试,观察寄存器和内存空间00200H~00207H,以及,栈空间00220 ~ 0022fH内容变化情况。记录实验结果。
【填空】
1 -a 2 mov ax, 20 3 mov ds, ax 4 mov ss, ax 5 mov sp, 30 6 push [0] ; 执行后,寄存器(sp) = 2e 7 push [2] ; 执行后,寄存器(sp) = 2c 8 push [4] ; 执行后,寄存器(sp) = 2a 9 push [6] ; 执行后,寄存器(sp) = 28 10 pop [6] ; 执行后,寄存器(sp) = 2a 11 pop [4] ; 执行后,寄存器(sp) = 2c 12 pop [2] ; 执行后,寄存器(sp) = 2e 13 pop [0] ; 执行后,寄存器(sp) = 30
问题一:逻辑地址0020:0030H 物理地址00230H
问题二:
问题三:
问题四:
问题一:没有暂停执行,mov sp 30和mov ss, ax会一起执行。
问题二:黄色下划线表示出的数据值是下一步所要执行的命令地址,因为之前mov sp 30和mov ss, ax一起执行。
1 assume cs:code 2 code segment 3 start: 4 mov cx,10 5 mov dl,'0' 6 s: mov ah,2 7 int 21h 8 add dl,1 9 loop s 10 11 mov ah,4ch 12 int 21h 13 14 code ends 15 end start
1 assume cs:code 2 code segment 3 mov ax,cs 4 mov ds,ax 5 mov ax,0020h 6 mov es,ax 7 mov bx,0 8 mov cx,23 9 s: mov al,[bx] 10 mov es:[bx],al 11 inc bx 12 loop s 13 14 mov ax,4c00h 15 int 21h 16 17 code ends 18 end
依据:指令的起始地址、总长度