酸辣土豆丝 发表于 2012-2-29 19:31:00

关于段偏移变量的问题!!!

教程中讲到:在将内存中的数据循环的累加到寄存器时,可以用bx作为变量
mov bx,0
mov dx,0

mov cx,12
123:mov al,ds:
         mov ah,0
         add dx,ax
         inc bx
loop 123

我的想法是,用cx作为变量,省去bx的引用:

mov dx,0

mov cx,12
123:mov al,ds:
         mov ah,0
         add dx,ax
loop 123

请高人指点下,这样可不可以?

夏洛 发表于 2012-2-29 19:31:01

本帖最后由 夏洛 于 2012-2-29 21:25 编辑

:funk:不可以,第一是CX后面的作用,都是作为循环,转移的条件的,第二是内存单元的表示只能有四个寄存器分别是bx,si,di,dp。这个学到后面会提及,所以【cx】这种使用是完全错误的

莫名其妙 发表于 2012-2-29 21:02:09

本帖最后由 莫名其妙 于 2012-2-29 21:06 编辑

编译器是不允许有 这样的情况的 而且cx只是作为作为循环次数或者计算位移次数设定的

王爽老师这本书上没有写出各个寄存器的一般用途你可以在网上搜索下 8个通用寄存器的一般用途 有个表格的!~

酸辣土豆丝 发表于 2012-2-29 21:09:03

莫名其妙 发表于 2012-2-29 21:02 static/image/common/back.gif
编译器是不允许有 这样的情况的 而且cx只是作为作为循环次数或者计算位移次数设定的

王爽老师这 ...

你的意思是【】里面必须是BX?

莫名其妙 发表于 2012-2-29 22:10:53

酸辣土豆丝 发表于 2012-2-29 21:09 static/image/common/back.gif
你的意思是【】里面必须是BX?

bxsi di bp   不能用 ax cx dx sp

key2046 发表于 2017-1-9 18:07:24

bx  si di bp   不能用 ax cx dx sp

key2046 发表于 2017-1-9 19:07:07

bx  si di bp   不能用 ax cx dx sp
页: [1]
查看完整版本: 关于段偏移变量的问题!!!