下面是我做出来的答案:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
检测点3.1
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
(1)
mov ax,1
mov ds,ax
mov ax,[0000] AX=2662H
mov bx,[0001] BX=E626H
mov ax,bx AX=0C88H
mov ax,[0000] AX=2662H
mov bx,[0002] BX=D6E6H
add ax,bx AX=FD48H
add ax,[0004] AX=2C14H
mov ax,0 AX=0000H
mov al,[0002] AX=0002H
mov bx,0 BX=0000H
mov bx,[000c] BX=0026H
add al,bx AX=000CH
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
(2)
各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;
我把①②两小问综合在一起了,以下是我的解答:
mov ax,6622H 取指令;IP=0003;执行命令;AX=6622H;
jmp 0ff0:0100 取指令;IP=0008;跳转,CS=0FF0,IP=0100H;
mov ax,2000H 取指令;IP=0103;执行命令;AX=2000H;
mov ds,ax 取指令;IP=0105;执行命令;DS=2000H;
mov ax,[0008] 取指令;IP=0108;执行命令;AX=C389H;
mov ax,[0002] 取指令;IP=010B;执行命令;AX=EA66H;
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
③
我认为数据和程序在内存中没有区别;数据通过数据段地址知道,程序通过代码段地址知道。
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
检测点3.2
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
(1)
空缺处填:
mov ax,2000H
mov ss,ax
mov sp,10H
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
(2)
空缺处填:
mov ax, 1000H
mov ss,ax
mov sp,10H ;这里应该sp应该是0000,因为栈满,sp指向栈顶
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- [tomato] 是的,改对了。 05/13 23:39
- [gnunix] 第二小题的sp设置的有问题吧? 05/13 09:47
- [tomato] 检测点3.2的第二小题填写的有问题。 05/12 23:09
- [gnunix] 恩,加油!我们一定会战斗到底的! 05/12 18:20
- [yahwei] 有相同的爱好也可以叫同道中人,做为同道中人的我,肯定会支持你的。加油。 05/12 17:48
- [gnunix] 恩,我做了,正在做,所以我从头再来了一遍。 05/12 12:13
- [tomato] 细节是很重要,希望博主在这方面能够有所提高。另外,提醒一下博主,学习这本书,一定要谨记前言中的两句话 05/10 23:58
- [tomato] 希望博主将自己的检测点和实验都一一发到博客中,大家可以互相交流。 05/10 23:50
- [tomato] 建议博主认真看一下该书的前言,一定要严格按照前言嘱咐的两点去学习,即: 1.没有通过检测点不要 05/10 23:49
- [tomato] 不能急于求成,既然走到这一步,那就要靠自己了。既然爱学习,就要想办法学会,有什么问题可以在博客中和论 05/10 23:44