|
1鱼币
本帖最后由 destiny 于 2012-7-19 12:57 编辑
问题:计算ffff:0006单元中的数乘以3,结果存储在dx中。
小甲鱼老师的代码
assume cs:code
code segment
mov ax, 0ffffH
mov ds, ax
mov bx, 6
mov al, [bx]
mov ah, 0
mov dx, 0
mov cx, 3
s: add dx, ax
loop s
mov ax, 4c00H
int 21H
code ends
end
小甲鱼老实说这两步可以直接改成mov ax,[bx]
mov al, [bx]
mov ah, 0
现在我的疑惑就是在以前的课程中我们小甲鱼老师说: [bx]中的值是要看赋予前面寄存器是ax 还是al来决定的,因为一个是16位寄存器,而另一个是8位的寄存器,ax的话那么就要把[bx]下面的一个值连带上,al的话就是[bx]本身的值,那么这道题是要ffff:6处乘以3再放到dx中,人家没说ffff:6处的值赋予dx以后在乘以3,如果是后者的话那么就是我的错 ,如果是前者的话,我认为小甲鱼老师做的那个实验是错的。ffff:6处的值很明显是一个8位的数据也就是一个字节,mov ax,[bx]很明显是把一个字传送过去了,所以我就疑惑在这里了,而不知道我这样理解的对不对,还请老师和各大神牛说一下自己的见解。
|
最佳答案
查看完整内容
1.cx的值应该为3
2.先将值算出来再放入dx 和 先将值送入dx再计算。没有区别。只要最后的结果正确。
3.如果0ffff:0007处的值为0。那么就可以
mov ax,
如果不为0。就需要mov ah,0了。
|