longer 发表于 2011-3-21 09:24:32

请教“实验4 - 实验任务解答”

本帖最后由 loop 于 2011-5-7 23:22 编辑

第二题“编程,向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。”中小甲鱼老师给出的答案如下assume cs:codesg
codesg segment

   mov ax,0020h

   mov ds,ax

   mov bl,0

   mov cx,40h

s:   mov ,bl

   inc bl

   loop s



   mov ax,4c00h

   int 21h



codesg ends

end但是我自己做的时候其中的一句mov bx,0 和小甲鱼老师用的 mov bl,0不一样 但结果一样
请问 是将整个BX置零好还是仅仅置零BL,有什么区别

本文来自:鱼C工作室<a href=http://www.fishc.com>详细出处参考:http://www.fishc.com/a/kehouti/_huibianyuyan_/828.html

china0008 发表于 2011-3-21 10:31:51

都可以啊。 16位最大可以表示FFFF,8位最大可以表示FF,按照题意用8位就够了。本着能省就省的原则就是用8位啦。游戏到后期寄存器不够分配的时候这种思路也是种方法了。再不行就得利用栈了。(不过这是后话了,继续学习哈。)

776051771 发表于 2011-4-29 22:24:54

回复 china0008 的帖子

请问这一题中、、mov bl,0、、再后来mov ,、、、这个里面bx中的bh是多少呢?一定是0吗??

winddyj 发表于 2011-4-30 19:00:31

程序一开始,各寄存器没有赋值的时候都是0
如果bh用不上,个人还是建议用bx,这样不用把bh专门赋值为0

tebi 发表于 2011-5-13 21:13:26

bl中的值给内存,每次是bl-》ds:【bx】这样的情况是,每次把一个8位十六进制数存放到内存单元,而一个内存单元正好是8位。如果bl改成bx,每次要将两个字节16位存入内存,得多用一个内存单元,我觉得o要占一个内存单元,但是bx每次只加一,所以第二个单元的零被覆盖了,所以没有区别,只是bl更逻辑些。
页: [1]
查看完整版本: 请教“实验4 - 实验任务解答”