在debug中,使用d命令查看生产日期:
使用e命令修改生产日期和内存单元:
可以发现存储的还是原来的内容,修改失败了,因为ROM中存储的内容只能读不能写,所以无法修改。
e命令修改内存单元命令:
1 -e b800:0 03 04 03 04 03 04 03 04 03 04
效果截图:
可以发现修改内存单元后出现了五枚红心。
f命令批量批量填充命令:
1 -f b800:0f00 0f9f 03 04
效果截图:
在底部出现了更多的红心。
填空:
-a mov ax, 20 mov ds, ax mov ss, ax mov sp, 30 push [0] ; 执行后,寄存器(sp) = _1020_ push [2] ; 执行后,寄存器(sp) = _3040_ push [4] ; 执行后,寄存器(sp) = _5060_ push [6] ; 执行后,寄存器(sp) = _7080_ pop [6] ; 执行后,寄存器(sp) = _7080_ pop [4] ; 执行后,寄存器(sp) = _5060_ pop [2] ; 执行后,寄存器(sp) = _4030_ pop [0] ; 执行后,寄存器(sp) = _2010_ 问题1:
问题一:逻辑地址:0020:30h;物理地址:00230h。
问题二:
问题三:
问题四:有变换,顺序变换了。
问题1:并没有停止,mov ss,ax和mov sp,30 连续执行。
问题2:08 01 是IP地址,即偏移地址。3F 07 是CS地址,即程序段地址,是暂存地址,因为存在中断,所以需要暂存原来程序的入口,所以存了下来。
task6.asm
1 assume cs:code 2 3 code segment 4 start: 5 mov cx, 10 6 mov dl, '0' 7 s: mov ah, 2 8 int 21h 9 add dl, 1 10 loop s 11 12 mov ah, 4ch 13 int 21h 14 code ends 15 end start
查看PSP内容
完整源代码:
assume cs:code code segment mov ax,cs mov ds,ax mov ax,20h mov es,ax mov bx,0 mov cx,cx s: mov al,[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end
cs是程序入口,cx是程序代码长度