9.1
(1)
首先因为jmp有显示指定是word ptr,所以偏移地址[bx+1]一定是一个16位的字型数据,也就是说data里要用dw来创建数据。
其次,程序的第一条指令都是CS:0000,于是偏移地址[bx+1]指定的数据要为0。
(2)
第一个空要填0,理由同上。也可以填bx
第二个空填代码段的段地址,比如cs或者data
(3)
因为是dword ptr,所以这是一个段间转移。高位为cs,低位为ip。于是CS=0006H,IP=00BEH
9.2
(1)要补全的如下
mov cl,[bx]
mov ch,0
jcxz ok
inc bx
9.3
inc cx
因为loop会先cx-1再来看是不是cx=0,所以万一cx是0的话,loop检测的cx是0-1=-1,不是0会继续循环。
;另外要注意这里的loop有C++里的do……while的感觉,如果loop s在s后面的话,是会先执行一次s里的指令的。
10.2
首先 “call 标号” 相当于 进行“ push IP”,然后“jmp near ptr 标号”。要注意的是,IP是call 标号的下一条指令的IP,而不是指令call 标号的IP。因为我们在指令的执行是先改变IP,然后再把指令送入指令缓冲器中,再执行。所以这个“call s”,执行时,push ip,是push的6而不是3。