bevin 发表于 2011-5-23 15:33:51

关于mov ax,[bx] 和mov al,[bx]的一些疑惑。

本帖最后由 loop 于 2011-5-29 23:30 编辑

在寄存器中放入某单元地址的值时,假设段地址为ds = ffff;bx = 00;那么mov ax,是将ffff:0中的值放在ax的高位或者低位还是将ffff:0中和ffff:0001中的值一起放到ax中?mov al,这语句又是怎么回事?{:5_94:}

weixianlang 发表于 2011-5-23 15:48:20

相当于传送ffff:0和ffff:1两个字节,高字节放在高位地址,低字节放在低位地址,mov al,,只是传送一个字节,因为al是一个字节!就是传送ffff:0

fishz 发表于 2011-5-23 16:44:02

这是看你寄存器的格式的。如果是bx,则以字的形式传送;如果是bl(或bh),则以字节的形式传送。
当语句中没有出现常用寄存器时,如mov ds:, 0h,这样写就是错的,必须要加上传送的形式:mov word ptr ds:, 0h, 或者mov byte ptr ds:, 0h.
还有一种情况是特殊的,就是进出栈的时候,无需注明传送类型,默认为字传送。push ax; push ds:这些都是默认以字的形式push入栈。

bevin 发表于 2011-5-23 17:08:35

回复 fishz 的帖子

额,好复杂啊。。。。基本是知道了,谢了{:5_92:}

bevin 发表于 2011-5-23 17:11:01

回复 weixianlang 的帖子

嗯,谢谢了。。。。
页: [1]
查看完整版本: 关于mov ax,[bx] 和mov al,[bx]的一些疑惑。