实验任务2
实验结果:1)-d命令用来查看某一区域的内存使用情况,段基址为ffff,乘以16之后就是ffff0,再加上偏移地址就是最后查看的地址
2)先查看生产日期内存区域
尝试进行修改
再次查看,修改无效,说明这块区域只能读,不能写
实验任务3
1)-e b800:0 03 04 03 04 03 04 03 04 03 04
2)-f b800:0f00 0f9f 03 04 对某一段内存进行批量修改
3) 尝试进行对内存进行修改
实验任务4
当执行完mov sp,30之后,ss:sp指向栈底0020:0030,每执行一次push,sp就减2。
每执行完一次pop,sp就+2。
答案1:栈顶的逻辑地址为0020:0030,因为此时栈为空,这时栈顶和栈底重合,物理地址为00230
答案2:每次push放入的是字形数据,20位于栈底,所以放入的是1020,再放入3040
答案3:没有变化
答案4:
实验任务5
答案1:当执行完mov ss,ax之后sp的值也改变了,说明这两条指令并不会分步执行,而是会一起执行
答案2:t命令使cpu中断,但是编译器要知道下面命令的地址,于是在栈中存放了下一条命令的地址。
实验任务6
实验任务7
答案1: 第一空填cs,要把程序段的入口放在ds段基址寄存器中后面就能根据偏移地址复制
第二空填cx,是程序的长度
没有操作数的指令,指令长度为1个字节
操作数只涉及寄存器的的指令,指令长度为2个字节,如:mov bx,ax
操作数涉及内存地址的指令,指令长度为3个字节,如:mov ax,ds:[bx+si+idata]
操作数涉及立即数的指令,指令长度为:寄存器类型+1。 8位寄存器,寄存器类型=1,如:mov al,8;指令长度为2个字节。 16位寄存器,寄存器类型=2,如:mov ax,8;指令长度为3个字节
CS为代码起始段地址