|
发表于 2012-3-5 00:27:13
|
显示全部楼层
第二个空位,{mov cx,x}用来限定loop的循环次数,最小当然是1不然没意义。最大看loop里的指令
mov al,【bx】。 al最多能被赋予多少个数值呢?一个低8位,最大就是ff咯。所以这个mov cx,x指令x的数值就在1——ff之间随便选取一个咯。选多少随便你,程序补充完全,就可以进行编译了。编译完成后debug一下这个程序进行跟踪。答案里写的看cx的数值,但是我不是。因为题目说的是mov ax,4c00h之前,那么只要调试到它之前一步就可以了,这时候看下ip的数值是多少?是不是18.ip移动18说明这个程序代码的长度就是18.如果不理解你可以 用命令-u cs:0 18就会发现这18个字节里就是你编写的机器码。说明这些机器码的长度就是18. 你在用命令-d cs:0 18就能看到这18个字节里的对应的内存地址数据。一共18个内存数据,当然要mov al,【bx】 18次了。所以mov cx,x里的x为18。 通过这些就能看明白,答案分析里的ds和cs一样,就是说cs代码段,在内存地址中,也是数据的意思。ds是数据段,自然也是数据。后面的课程还没有看,不知道我说的对错呢,交流思考就是学习。一起努力吧。 |
|